以编程方式更改高度约束

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() 经过大量搜索后工作!谢谢!!

以上是关于以编程方式更改高度约束的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更改 UIImageView 的高度?

以编程方式更改纵横比约束值

动态表格视图单元格,以编程方式更改子视图高度

以编程方式更改堆栈视图中容器的高度

如何以编程方式设置scrollview高度

如何以编程方式设置滚动视图高度