如果有长文本,则可滚动 UIView,否则不可折叠

Posted

技术标签:

【中文标题】如果有长文本,则可滚动 UIView,否则不可折叠【英文标题】:Scrollable UIView if there is long text, otherwise nonscollable 【发布时间】:2016-02-17 11:10:18 【问题描述】:

我什至不确定如何制定这个 - 有 UIViewUIImageUILabelUITextField 字段。现在如果UITextField 中的文本很长,我希望整个UIView 可以滚动(不仅仅是UITextField,这很容易)。

我尝试在内部制作带有图像、文本和标签的可滚动视图,但如果我将文本字段设为不可滚动,则大部分文本根本不会显示。

【问题讨论】:

您可能想要拉伸文本字段的大小,并相应地设置可滚动视图的Content Size 是的,刚刚找到更多信息,这似乎是个好主意。但是我可以根据文本的长度调整内容大小吗?就像它是图像一样,我可以使用类似 frame.size.height 你可能想使用 Anbu 建议的 UITextView,并更改它的大小显示here。然后您可以获取frame.size.height 并将其用于可滚动的内容大小。 【参考方案1】:

如果您将UITextFieldnumberoflines 属性设置为0,例如_txtField.numberoflines = 0,那么它应该会自动调整内容大小。确保您在 UIScrollView 之间设置了正确的约束,其中包含您的其他视图,例如 UIImageViewUILabelUITextFiled

【讨论】:

【参考方案2】:

我遇到了类似的问题,并使用UITableView 作为解决方案。表格视图中的每个单元格都可以是自定义视图。 (文本/标签/图像,随心所欲)

对于您的文本,您可以简单地将WebView 嵌入到其中一个表格视图单元格中,同时确保将 webView 的滚动视图的委托设置为表格视图。

基于人们通常在 TableView 中使用 webView 时遇到的问题,您可能必须检测文本的内容大小并动态调整单元格高度,然后调用 reload。

您还可以采取另一种可能的方法(如果您想避免使用UIWebView)-NSAttributedString。您可以将单元格的 `textLabel?.attributedText' 设置为属性字符串,这将保留您想要的效果。

在此之前,请确保将“cell.textLabel?.numberOfLines”设置为 0。

【讨论】:

以上是关于如果有长文本,则可滚动 UIView,否则不可折叠的主要内容,如果未能解决你的问题,请参考以下文章

如何沿一条线“折叠” 3D UIView?

带有 MotionLayout 的 Android 折叠工具栏 - 当 RecyclerView 为空/不可滚动时禁用运动

除非滚动表格,否则 UITableViewCell 内的 UIView 调整大小不显示

滚动视图内的UIButton不可单击

UIView 框架在滚动时自动重置

滚动视图中不可滚动的表视图