【问题标题】:iOS swift multi-line UILabel in a viewiOS swift多行UILabel在一个视图中
【发布时间】:2015-07-26 06:59:12
【问题描述】:

我想在 Interface Builder 中完成下图所示的操作。基本上两个标签 - 一个多行和一个注释 - 在视图内,视图在页面上水平居中。所以要清楚,我不能对视图施加宽度约束,否则居中将无法正常工作。

当标签不在视图中但我将其放置在视图中并设置顶部、左侧和右侧约束时,我可以将带有实际小时数的标签变为多行 - 标签恢复为单行.

下面是视图中标签的约束和属性,以及当我更新帧时 IB 所做的图片。任何建议将不胜感激。

标签有一些限制,其中只有工作时间:

这是我更新框架后的样子

【问题讨论】:

    标签: ios uiview autolayout uilabel multiline


    【解决方案1】:

    您的多行标签或外部视图需要以某种方式限制其宽度,否则标签将扩展其宽度以容纳一行文本。如果该行足够长,则文本将超出视图的边缘,这似乎是您上一张图像中发生的情况。

    编辑后:

    要在小时列表较短时使视图居中,但在小时列表较长时仍允许视图较宽,请给外部视图一个

    我发现在 IB 中添加此

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addConstraint(NSLayoutConstraint(item: labelsView, attribute: .Width, relatedBy: .LessThanOrEqual, toItem: self.view, attribute: .Width, multiplier: 1, constant: 0))
    }
    

    【讨论】:

    • 请查看两个标签的预期结果。粗体字 hours 是一个标签,另一个标签显示实际小时数。带有单词 Hours: 的标签具有顶部、底部和左侧约束。第二个标签具有上下左右约束。问题不在于调整大小的视图,问题在于其中包含实际小时数的第二个标签不会出现多行。我已经用两个标签的约束更新了问题
    • 还有一点关于上一个答案 100% 不正确的注释,我不希望人们相信这是真的,外部视图不需要限制其宽度;宽度约束或对其父视图两侧的约束。有关使视图自动调整大小起作用所需的确切讨论,请参阅此 SO 文章stackoverflow.com/questions/30158471/…
    • @GeorgeMCeaserJr 使用多行标签,外部视图(或标签本身)确实需要宽度限制。如果你没有那个(这是你的主要问题),那么标签会扩大它的宽度以容纳一行上的文本,如果那行足够长,它就会从屏幕上消失——这就是我我看到你的形象。限制宽度的东西需要强制文本分成多行,否则,标签怎么知道在哪里换行?
    • OK - 我尝试使用宽度约束 anti 确实有效,但这无法满足我的需要。这样做的目的是让两个标签在视图中被视为一个组,并使视图在页面上水平居中。为视图提供宽度属性将使视图中的两个标签不在页面上水平居中。我确实在我的问题中说明了这一点,但可能不清楚,因此我将更新我的问题以使其更清楚。关于如何让它发挥作用的任何其他想法?
    • @GeorgeMCeaserJr 我仍然不确定你想要什么居中。听起来您希望包含 2 个标签的视图居中。如果该视图具有 centerX 约束和固定宽度,它将居中。如果这不是您想要的,请澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2011-12-21
    相关资源
    最近更新 更多