如果有长文本,则可滚动 UIView,否则不可折叠
Posted
技术标签:
【中文标题】如果有长文本,则可滚动 UIView,否则不可折叠【英文标题】:Scrollable UIView if there is long text, otherwise nonscollable 【发布时间】:2016-02-17 11:10:18 【问题描述】:我什至不确定如何制定这个 - 有 UIView
和 UIImage
、UILabel
和 UITextField
字段。现在如果UITextField
中的文本很长,我希望整个UIView
可以滚动(不仅仅是UITextField
,这很容易)。
我尝试在内部制作带有图像、文本和标签的可滚动视图,但如果我将文本字段设为不可滚动,则大部分文本根本不会显示。
【问题讨论】:
您可能想要拉伸文本字段的大小,并相应地设置可滚动视图的Content Size
是的,刚刚找到更多信息,这似乎是个好主意。但是我可以根据文本的长度调整内容大小吗?就像它是图像一样,我可以使用类似 frame.size.height
你可能想使用 Anbu 建议的 UITextView,并更改它的大小显示here。然后您可以获取frame.size.height
并将其用于可滚动的内容大小。
【参考方案1】:
如果您将UITextField
的numberoflines
属性设置为0
,例如_txtField.numberoflines = 0
,那么它应该会自动调整内容大小。确保您在 UIScrollView
之间设置了正确的约束,其中包含您的其他视图,例如 UIImageView
、UILabel
和 UITextFiled
。
【讨论】:
【参考方案2】:我遇到了类似的问题,并使用UITableView
作为解决方案。表格视图中的每个单元格都可以是自定义视图。 (文本/标签/图像,随心所欲)
对于您的文本,您可以简单地将WebView
嵌入到其中一个表格视图单元格中,同时确保将 webView 的滚动视图的委托设置为表格视图。
基于人们通常在 TableView 中使用 webView 时遇到的问题,您可能必须检测文本的内容大小并动态调整单元格高度,然后调用 reload。
您还可以采取另一种可能的方法(如果您想避免使用UIWebView
)-NSAttributedString
。您可以将单元格的 `textLabel?.attributedText' 设置为属性字符串,这将保留您想要的效果。
在此之前,请确保将“cell.textLabel?.numberOfLines”设置为 0。
【讨论】:
以上是关于如果有长文本,则可滚动 UIView,否则不可折叠的主要内容,如果未能解决你的问题,请参考以下文章
带有 MotionLayout 的 Android 折叠工具栏 - 当 RecyclerView 为空/不可滚动时禁用运动