【问题标题】:Obj-C, changing autolayout at runtime, woesObj-C,在运行时更改自动布局,麻烦
【发布时间】:2015-05-26 12:31:29
【问题描述】:

我正在尝试隐藏表格视图并在屏幕上移动一个按钮,这与我的自动布局设置不同。基本上,我有一个免费版本的应用程序,我可以在其中隐藏东西,然后如果他们购买,我需要将约束设置回界面生成器中的约束。

我有一个类似的问题悬而未决,但我认为我的方法存在根本缺陷......(我已经听取了提供和回答的人的建议,提出了这个单独的问题)。

ObjC, revert to interface builder autolayout constraints, after adding / removing programmatically?

我可以很好地移动东西,这会修改我的界面构建器约束。 但是,当用户点击升级时,我无法再次设置修改/约束。

无论我做什么,在运行时使用可视化格式语言,或者使用NSLayoutConstraint constraintWithItem outlets 复制然后修改我的约束,它不会改变。我已经尝试删除约束出口,复制我存储在 viewdidload 中的那些并删除 vfl 约束,与我为我的免费版本添加的那些完全相同。

在我添加优先级之前,我收到了一些 vfl 警告。

我是否可以将所有内容的 vfl 转储出来并尝试找出问题,或者可以说明我尝试过的方法失败的原因?

【问题讨论】:

  • 修改约束后是否调用 layoutIfNeeded?
  • 您对上一个问题的建议是否已采纳?即,您是否只是更改现有约束的 constant 值,而不是替换和恢复或重新创建约束?这似乎是一个简单的布局,只需要更改界面构建器约束的 constant 值。

标签: ios objective-c cocoa-touch autolayout ios7.1


【解决方案1】:

与其尝试在运行时替换和恢复约束,不如考虑在 Interface Builder 中设置您需要的所有约束,并引用与状态相关的那些约束。然后,当状态根据您自己的逻辑发生变化时,激活适合状态的约束并停用不适合的约束。 NSLayoutConstraint 有一个active 属性,用于确定是否用于布局其视图。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2016-06-29
  • 2015-02-10
  • 1970-01-01
  • 2016-04-09
  • 2015-02-15
相关资源
最近更新 更多