这就是我想要的:
+-------------------------+ +-------------------------+
| +---------------------+ | | +---------------------+ |
| | UILabel | | | | UILabel | |
| +---------------------+ | | +---------------------+ |
| | | |
| +---------------------+ | | +---------------------+ |
| | UITextView; height | | | | UITextView; height || |
| | depends on content | | | | depends on content || |
| +---------------------+ | | | This one here has || |
| | | | so much text that | |
| +---------------------+ | | | the complete text | |
| | UIButton | | | | can only be seen by | |
| +---------------------+ | | | scrolling: Text Te… | |
| | | +---------------------+ |
| | | |
| | | +---------------------+ |
| | | | UIButton | |
| | | +---------------------+ |
+-------------------------+ +-------------------------+
所有元素都生活在普通的UIView上。
UILabel
和UIButton具有固定的高度。 UITextView
仅应与其内容一样高。即使是非常长的文本,其高度也绝不能将以下元素推离屏幕。
到目前为止我所拥有的:
使用此设置后,UITextView完全不会显示。如果我为UITextView设置了最小高度,则以该高度显示该高度,但是该高度不会适应内容。如果禁用滚动,则将适当调整UITextView的高度。
我可以使用内容识别滚动UITextView吗?可以通过AutoLayout完成吗?如果是,怎么办?
答案 0 :(得分:0)
不幸的是,没有以您想要的方式启用/禁用UITextView
滚动的“自动”方法。
一种选择是确定文本视图的最大高度,然后使用观察器来监视文本视图的contentSize
中的更改。当contentSize高度超过您的最大高度时,启用滚动。有关其他详细信息,请参见此答案(以及指向示例项目的链接):Expanding UITextView inside a Stack View with scrolling enabled
另一种选择是将非滚动UITextView
嵌入可滚动的UIScrollView
中。技巧是将滚动视图的高度限制为文本视图的高度,但将其优先级设置为250。将所有其他约束设置为正常。滚动视图的高度将随着文本视图的高度变化而扩展,但其他约束条件将对其进行限制,以使其不会持续增长。