【问题标题】:How to change constraints programmatically that is added from storyboard?如何以编程方式更改从情节提要添加的约束?
【发布时间】:2017-03-27 18:52:58
【问题描述】:

我只有一个屏幕。如下图所示

现在当用户点击我有一个帐户和密码(按钮)时,它将显示如下

我想相应地移动两个视图 我使用情节提要添加了约束。现在需要从编程中更改约束..

【问题讨论】:

  • 只需创建一个您想要更改的约束的出口,就像创建 UIButton 或 UILabel 的出口一样。

标签: ios objective-c xcode-storyboard


【解决方案1】:

您需要为您的约束创建一个 IBOutlet。

然后在代码中设置约束的常量值:

labelWidthConstraint.constant = newValue

如果你想要动画,你可以这样做:

斯威夫特

labelWidthConstraint.constant = newValue
UIView.animate(withDuration: 0.3, animations: { 
    self.view.layoutIfNeeded()
})

目标-C

self.labelWidthConstraint.constant = newValue;
[UIView animateWithDuration:0.3 animations:^{        
    [self.view layoutIfNeeded];
}];

【讨论】:

  • 您不应致电layoutSubviews()(请参阅文档)。请改用layoutIfNeeded()。
  • Nilam Pari,我更新了答案以包含一个 Objective-C 示例。
  • 另外,对于动画,您不需要在动画块内设置常量。把它放在动画块之外,所以动画块只有layoutIfNeeded方法。
  • 如果不使用硬编码值的例子会很高兴 - 与 7s plus 相比,4s 上的 UI 看起来有何不同?
猜你喜欢
  • 2015-02-27
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多