gpt4 book ai didi

ios - 在 iOS 中以编程方式更改 NSLayoutConstraint 的关系

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:07:29 29 4
gpt4 key购买 nike

我在屏幕底部有一个 UITextView
它具有对父 View 的前导、尾随底部空间限制
它还具有 值为(常量)40 的高度限制

当我继续在其中输入更多文本时,我想让这个 TextView 具有灵活的高度。我可以通过将高度约束值更改为 大于或等于 来实现灵活的高度:

enter image description here

它工作正常, TextView 高度继续增加。

但是当我成功时, Storyboard 显示这个错误:

enter image description here

我想通过编程方式使约束值大于或等于,而不是通过 Storyboard 。

我知道 NSLayoutConstraint 有一个属性叫做

public var relation: NSLayoutRelation { get }

但正如我们所见,它是只读的。

如何将此关系更改为以下之一:

public enum NSLayoutRelation : Int {   
case LessThanOrEqual
case Equal
case GreaterThanOrEqual
}

或者是否有任何解决方法可以在基于自动布局的 Storyboard中查看灵活的高度?


我知道如何使 IBOutlet 成为约束并更改它的常量值,但在我的情况下我不能这样做,它应该动态更改。

最佳答案

相关: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;
}

关于ios - 在 iOS 中以编程方式更改 NSLayoutConstraint 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36264942/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com