【问题标题】: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!

标签: ios height constraints autolayout


【解决方案1】:

尝试在viewDidLayoutSubviews 中设置常量。

请注意,使用文本视图的contentSize 属性设置文本视图的高度在 iOS 7 中不起作用。请参阅https://stackoverflow.com/a/18837714/1239263

【讨论】:

  • 刚刚试过,在iOS6模拟器中工作正常,视图显示和高度是正确的,但是在iOS7中我可以看到视图显示后高度是如何变化的。也许我做错了什么?
  • 非常感谢!它与它一起工作,现在我检查它是否是 iOS7 并按照您发布的答案中的说明进行操作。谢谢!
  • 感谢您的帖子。这解决了我对 iOS8 的相同问题,但是,它使 iOS7 的应用程序崩溃。知道为什么吗?我还在调查。
  • viewDidLayoutSubviews() 经过大量搜索后工作!谢谢!!
猜你喜欢
  • 2015-07-15
  • 2015-04-02
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
相关资源
最近更新 更多