使用故事板、自动布局和 Swift 的多行 UILabel 和 UITextView
Posted
技术标签:
【中文标题】使用故事板、自动布局和 Swift 的多行 UILabel 和 UITextView【英文标题】:Multiline UILabel and UITextView using Storyboards, Auto Layout and Swift 【发布时间】:2014-11-17 05:54:12 【问题描述】:我正在尝试添加一个多行 UI 标签作为标题,然后添加一个 UITextView 作为内容主体。
我已经添加了 UILabel 和 UITextView 如下:-
标签的行数设置为 0,字符换行和标准的左、右、下和上约束。我还设置了最小高度限制,但这似乎并没有改变任何东西。它下面的 UITextView 对标签有一个顶部约束,对视图/布局指南有左、右和底部约束。
实际输出是这样的:-
这个标签应该有 3 行,但它只显示 2 行/
此标签应有 2 行,文字为“三环类抗抑郁药”,但最后一行不可见。
我的设置/约束有什么问题吗?
谢谢
【问题讨论】:
我假设您在两个标签上都设置了 preferredMaxLayoutWidth。您可以尝试将最大布局宽度减小...例如标题标签的 10 个点吗?我最近有一种预感,ios 8 有一个错误。 感谢您的评论。我没有为任何一个控件设置 preferredMaxLayoutWidth。我需要设置它还是可以使用情节提要完成所有事情? 在 iOS 8 中,界面生成器中有一个新部分可以设置;但是,它通常不需要设置 - 它应该会自动工作。但是,如果我是对的,并且这是首选MaxLayoutWidth 的错误,您将需要在layoutSubViews 中设置它。调用 [super layoutSubViews] 后,执行label.preferredMaxLayoutWidth = label.frame.size.width - 10
之类的操作。看看这是否有效。
原来这是 iOS 的一个错误。我只是将preferredMaxLayoutWidth 设置为 lbl.preferredMaxLayoutWidth = self.view.bounds.width 并且它工作得很好。感谢您的所有投入。请将您的评论写为单独的答案,以便我将其标记为答案。
【参考方案1】:
做这两件事:
-
增加标签的行数
将高度约束设置为大于或等于
【讨论】:
您好,感谢您的回复。我的高度限制已经大于或等于,我尝试将行数增加到 3,但没有帮助。 确保你有标签到Textview的底部约束 嗨,我的标签的底部约束设置为 textview。实际上我没有为标签添加底部约束,但我为 textview 添加了顶部约束,因此它也为标签添加了底部约束。【参考方案2】:确保顶部标签的垂直抗压优先级高于文本视图。
【讨论】:
嗨。感谢您的回复。我将两个控件的垂直和水平内容压缩阻力默认设置为 750。我将标签的垂直压缩更改为 1000,但这并没有解决它。我忘了提及,但即使我删除了 textview,标签也不会显示完整的文本。以上是关于使用故事板、自动布局和 Swift 的多行 UILabel 和 UITextView的主要内容,如果未能解决你的问题,请参考以下文章