我不想设置 Y 位置约束,因为我需要 View 彼此相对,因为我有一个 UITextView 必须并且应该根据如何动态更改其值里面有很多行文字。但它不会这样做。我可以通过在 UITextView 上调用 sizeToFit() 来强制它执行此操作,但它会与下面的 View 重叠。
Xcode 提醒我减少歧义, View Controller 上到处都是红线,但如果必须是动态的,手动设置 Y 位置约束对我来说没有任何意义。
所以我的问题是我该如何 1. 让我的 UITextView 在文本行数增加后调整它的高度 2. 使其下方的 View 自动下推,这样 UITextView 就不会与它们重叠。
我已经阅读了多个答案并设法做到了 1 而不是另一个。
Swift 中的解决方案:
let sizeThatFitsTextView = textView.sizeThatFits(CGSizeMake(textView.frame.size.width, textView.frame.size.height))
textViewHeightConstraint.constant = sizeThatFitsTextView.height
最佳答案
1) 从 Storyboard或通过编码禁用 Textview 的滚动
。
2) 为textview 的高度约束
创建一个outlet
。当基于计算发生文本更改时,通过 textView 委托(delegate)方法以编程方式更改高度约束。
CGSize sizeThatFitsTextView = [TextView sizeThatFits:CGSizeMake(TextView.frame.size.width, MAXFLOAT)];
TextViewHeightConstraint.constant = sizeThatFitsTextView.height;
关于iOS Storyboard - 自动布局不会调整 subview 的大小和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37919701/