【问题标题】:UILabel - Wordwrap textUILabel - 自动换行文本
【发布时间】:2010-11-10 10:02:14
【问题描述】:

有什么方法可以根据需要添加标签自动换行文本吗?我将换行符设置为自动换行,并且标签足够高,可以容纳两行,但它似乎只会在换行符处换行。我是否必须添加换行符才能使其正确换行?如果它不能水平装入,我只想把它包裹起来。

【问题讨论】:

    标签: ios iphone cocoa-touch uilabel word-wrap


    【解决方案1】:

    如果您将numberOfLines 设置为 0(并将标签设置为自动换行),标签将自动换行并根据需要使用尽可能多的行。

    如果您在 IB 中编辑 UILabel,您可以通过按 option+return 输入多行文本以获得换行符 - return 单独完成编辑。

    【讨论】:

    • 为了澄清像我这样的菜鸟,这将是:cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
    • 在 iOS 6 及更高版本中,使用NSLineBreakByWordWrapping,而不是UILineBreakModeWordWrap
    • 您可能还需要以下内容:label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    • label.lineBreakMode = .ByWordWrappinglabel.numberOfLines = 0 快速
    • 对于不明显的人(比如我): UILabel 必须对其宽度有某种限制(来自实际宽度约束或边距约束);否则它不会换行。
    【解决方案2】:

    UILabel 有一个属性lineBreakMode,您可以根据需要进行设置。

    【讨论】:

    • “我将换行符设置为自动换行”。这只包含实际的换行符,一旦太长就不会自动换行。
    【解决方案3】:

    在 Swift 中你会这样做:

        label.lineBreakMode = NSLineBreakMode.ByWordWrapping
        label.numberOfLines = 0
    

    (注意 lineBreakMode 常量的工作方式与 ObjC 中的不同)

    【讨论】:

    • 想详细说明它的不同之处吗?
    • 我想我的意思只是命名不同。它可能在 swift3 中再次发生了变化
    • 换行模式默认设置为自动换行
    • @MobileMonin 我的经验并非总是如此。也许 IB 在某些情况下会改变它?
    • label.lineBreakMode = NSLineBreakByWordWrapping in Obj C
    【解决方案4】:

    Xcode 10、Swift 4

    也可以在 Storyboard 上通过选择标签并使用属性检查器来包装标签的文本。

    线 = 0 换行 = 自动换行

    【讨论】:

    • 使用 branBrand-New 标签,直接将其添加到视图中,这仍然会为我生成一个单行标签(宽度大于手机宽度),尽管将行设置为 0 和换行符到自动换行。是否需要其他设置?我需要附加额外的代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 2015-09-12
    • 2016-07-19
    • 1970-01-01
    相关资源
    最近更新 更多