使用故事板、自动布局和 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift xcode 故事板中正确使用纵横比?

带有故事板和自动布局的大小值

iOS - 自动布局与不同屏幕尺寸的不同故事板

没有自动布局的不同屏幕尺寸的相同故事板

通过故事板和自动布局完全使用 uiscrollview 水平滚动

自动布局不适用于故事板中放置的项目