以编程方式更改高度约束
Posted
技术标签:
【中文标题】以编程方式更改高度约束【英文标题】:Change height constraint programmatically 【发布时间】:2014-01-22 16:16:48 【问题描述】:我想以编程方式更改 UITextView 的高度约束,因此我将约束设置为控制器中的插座,如下所示:
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *descriptionHeightConstraint;
要更改它,我执行以下操作:
self.descriptionHeightConstraint.constant = self.description.contentSize.height;
如果我在 viewDidAppear 中执行此操作,但问题是我可以看到显示视图后高度如何变化,这对用户不是很友好,因此我尝试在 中执行此操作>viewWillAppear 但没有在那里工作,高度没有改变。更改约束后调用 setNeedsUpdateConstraints 也不起作用。
为什么在 viewDidAppear 中工作而不在 viewWillAppear 中工作?有什么解决方法吗?
提前致谢!
【问题讨论】:
这个问题为我提供了答案。谢谢@mxch。 确保将拥抱和抗压优先级设置为 less! 【参考方案1】:尝试在viewDidLayoutSubviews
中设置常量。
请注意,使用文本视图的contentSize
属性设置文本视图的高度在 ios 7 中不起作用。请参阅https://***.com/a/18837714/1239263
【讨论】:
刚刚试过,在iOS6模拟器中工作正常,视图显示和高度是正确的,但是在iOS7中我可以看到视图显示后高度是如何变化的。也许我做错了什么? 非常感谢!它与它一起工作,现在我检查它是否是 iOS7 并按照您发布的答案中的说明进行操作。谢谢! 感谢您的帖子。这解决了我对 iOS8 的相同问题,但是,它使 iOS7 的应用程序崩溃。知道为什么吗?我还在调查。 viewDidLayoutSubviews() 经过大量搜索后工作!谢谢!!以上是关于以编程方式更改高度约束的主要内容,如果未能解决你的问题,请参考以下文章