Obj-C,在运行时改变自动布局,麻烦
Obj-C, changing autolayout at runtime, woes
我正在尝试隐藏 table 视图并在屏幕上移动一个按钮,这与我的自动版式设置不同。基本上,我有一个免费版本的应用程序,我可以在其中隐藏东西,然后如果他们购买,我需要将约束设置回界面生成器中的约束。
我有一个类似的问题未解决,但我认为我的方法存在根本性缺陷....(我听取了提供和回答的人的建议,提出了这个单独的问题)。
我可以把事情往上推进,这会修改我的界面生成器约束。
但是,当用户点击升级时,我无法再次设置修改/约束。
无论我做什么,在运行时使用可视格式语言,或使用 NSLayoutConstraint constraintWithItem
出口复制然后修改我的约束,它都不会改变。我试过删除约束出口,复制我存储在 viewdidload 的那些并删除 vfl 约束,我为我的免费版本添加的那些的精确副本。
我收到了一些 vfl 警告,直到我添加了优先级。
我是否可以转储所有内容的 vfl 并尝试找出问题所在,或者有什么可以说明我尝试的方法失败的原因吗?
与其尝试在运行时替换和恢复约束,不如考虑在 Interface Builder 中设置您需要的所有约束,并引用那些依赖于状态的约束。然后,当状态根据您自己的逻辑发生变化时,激活适合状态的约束并停用不合适的约束。 NSLayoutConstraint
有一个 active
属性,决定它是否用于布局视图。
我正在尝试隐藏 table 视图并在屏幕上移动一个按钮,这与我的自动版式设置不同。基本上,我有一个免费版本的应用程序,我可以在其中隐藏东西,然后如果他们购买,我需要将约束设置回界面生成器中的约束。
我有一个类似的问题未解决,但我认为我的方法存在根本性缺陷....(我听取了提供和回答的人的建议,提出了这个单独的问题)。
我可以把事情往上推进,这会修改我的界面生成器约束。 但是,当用户点击升级时,我无法再次设置修改/约束。
无论我做什么,在运行时使用可视格式语言,或使用 NSLayoutConstraint constraintWithItem
出口复制然后修改我的约束,它都不会改变。我试过删除约束出口,复制我存储在 viewdidload 的那些并删除 vfl 约束,我为我的免费版本添加的那些的精确副本。
我收到了一些 vfl 警告,直到我添加了优先级。
我是否可以转储所有内容的 vfl 并尝试找出问题所在,或者有什么可以说明我尝试的方法失败的原因吗?
与其尝试在运行时替换和恢复约束,不如考虑在 Interface Builder 中设置您需要的所有约束,并引用那些依赖于状态的约束。然后,当状态根据您自己的逻辑发生变化时,激活适合状态的约束并停用不合适的约束。 NSLayoutConstraint
有一个 active
属性,决定它是否用于布局视图。