【问题标题】:How to change constants in AutoLayout constraints that are created in IB programmatically?如何更改以编程方式在 IB 中创建的 AutoLayout 约束中的常量?
【发布时间】:2015-02-26 18:48:56
【问题描述】:

我有一个UITableViewCell,它代表一个有个人资料图片、两个标签和另外两个其他状态相关UIImageViews 的玩家。

我已经在 Storyboards 中设置了带有 AutoLayout 约束的单元格,并且效果很好。唯一的小问题是单元格的宽度有时(取决于它的状态)对于 iPhone 4 和 iPhone 5 来说有点太宽了。我已经相当慷慨地设置了水平间距(元素之间的前导和尾随空间),这使它在较大的 iPhone 6 和 6 plus 上看起来不错。

但是,当我在 iPhone 4 或 5 上时,我想删除约束常量中的一些点。尺寸类在这里对我没有帮助,因为我的应用仅适用于纵向,并且所有 iPhone这里有相同的尺寸等级。 我正在寻找一种简单的方法来调整我在代码的情节提要中设置的水平空间约束的常量。

【问题讨论】:

  • 您说“垂直”,然后讨论前导和尾随约束以及宽度,它们是水平的。此外,您通常希望自动布局自动调整以适应宽度等的微小变化。即,使用基于超级视图宽度比例等的约束。 (例如,使用间隔视图,尽可能丑陋,并将它们的宽度限制为与父视图宽度相关的乘数。)
  • 感谢方向的提示,当然我的意思是水平的。刚刚在问题中更新了这个。

标签: ios objective-c autolayout


【解决方案1】:

我已经为任何 UI 元素分配了一个类似的变量 - NSLayoutConstraint。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *labelConstraint;

在代码中你会做这样的事情:

self.labelConstraint.constant = 10;

【讨论】:

  • 但这可能会导致约束冲突
  • 如果一个约束的常数不可能有不同的值而不引起冲突,那么这个约束是多余的。无论如何,这是您所问问题的正确答案。如果您必须修改多个约束,则禁用/删除它们,修改它们的常量,然后重新启用/重新添加它们。
  • 太棒了,正是我想要的!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多