iOS 故事板 - 自动布局不会调整子视图的大小和位置

Posted

技术标签:

【中文标题】iOS 故事板 - 自动布局不会调整子视图的大小和位置【英文标题】:iOS storyboard - Auto Layout won't resize and reposition subviews 【发布时间】:2016-06-20 10:04:54 【问题描述】:

我不想设置 Y 位置约束,因为我需要视图彼此相对,因为我有一个 UITextView 必须并且应该根据如何动态更改其值里面有很多行文字。但它并没有这样做。我可以通过在 UITextView 上调用 sizeToFit() 来强制它执行此操作,但随后它会与下面的视图重叠。

Xcode 提醒我减少歧义,并且整个视图控制器上都有红线,但如果必须是动态的,手动设置 Y 位置约束对我来说没有任何意义。

所以我的问题是我该怎么做 1.让我的UITextView在文本行数增加后调整其高度 2. 使其下方的views自动下推,使UITextView不会重叠。

我已经阅读了多个答案,并设法做到了 1 但没有做到另一个。

Swift 中的解决方案:

let sizeThatFitsTextView = textView.sizeThatFits(CGSizeMake(textView.frame.size.width, textView.frame.size.height))
textViewHeightConstraint.constant = sizeThatFitsTextView.height

【问题讨论】:

【参考方案1】:

1) Disable the scroll of Textview 来自故事板或编码。

2) 为textview's height constraint 创建一个outlet。当基于计算发生文本更改时,通过 textView 委托方法以编程方式更改高度约束。

CGSize sizeThatFitsTextView = [TextView sizeThatFits:CGSizeMake(TextView.frame.size.width, MAXFLOAT)];

TextViewHeightConstraint.constant = sizeThatFitsTextView.height; 

【讨论】:

@Questioner 欢迎 :-)

以上是关于iOS 故事板 - 自动布局不会调整子视图的大小和位置的主要内容,如果未能解决你的问题,请参考以下文章

iOS:自动布局的问题。模拟器结果更改为故事板更改

UIView 调整内容大小

UITextView 以编程方式调整大小,但随后设置为旧的故事板值。

如何使用自动布局调整情节提要的图像大小?

Xamarin iOS:滚动视图中的自动布局?

如何设置自动布局,以便 UILabel 调整大小并根据需要移动其他视图