屏幕底部有一个UITextView
它有leading, trailing bottom space constraints to the superview
它还有height constraint with value (constant) 40
。
我想在此处输入更多文字时,将此文本视图设为灵活高度。
我可以通过将高度约束值更改为greater than or equal
来使灵活高度为:
它工作正常,文本视图高度不断增加。
但是当我制作它时,故事板显示了这个错误:
我希望以编程方式使约束值大于或等于约束值,而不是来自故事板。
我知道NSLayoutConstraint
有一个名为
public var relation: NSLayoutRelation { get }
但我们可以看到它是只读的。
如何将此关系更改为以下之一:
public enum NSLayoutRelation : Int {
case LessThanOrEqual
case Equal
case GreaterThanOrEqual
}
或者是否有任何解决方法在基于自动布局的故事板中查看灵活高度?
我知道如何制作约束的IBOutlet并改变它的常量值,但在我的情况下我不能这样做,它应该动态改变。
答案 0 :(得分:1)
相关:auto layout modify multiplier of constriaint programmatically
使用ARC:
- (void)changeConstraintRelationToEqual:(NSLayoutConstraint * __strong *)constraint{
NSLayoutConstraint *newConstraint = [NSLayoutConstraint constraintWithItem:(*constraint).firstItem attribute:(*constraint).firstAttribute relatedBy:NSLayoutRelationEqual toItem:(*constraint).secondItem attribute:(*constraint).secondAttribute multiplier:(*constraint).multiplier constant:(*constraint).constant];
[self.view removeConstraint:(*constraint)];
[self.view addConstraint:newConstraint];
*constraint = newConstraint;
}
答案 1 :(得分:0)
我过去通过标记我需要在运行时设置的约束来解决这个问题,因为"占位符 - 在构建时删除"在“接口”构建器中,然后通过代码添加约束,以编程方式提供基于动态值的约束。