【问题标题】:Line break in UILabel is being ignored on buildUILabel 中的换行符在构建时被忽略
【发布时间】:2011-12-05 16:32:48
【问题描述】:

我正在尝试使用 XCode 4.2 和 Interface Builder 设置一个三行 UILabel,为 iOS 5 构建。放置 UILabel 后,我将行数设置为 3(这个问题也发生在行设置为 0),并且我使用 option-Return 在 text 属性中正确地换行。这一切都正确显示在 Interface Builder 的情节提要预览中。问题是当我在模拟器中构建和运行应用程序时,换行符被完全忽略,文本只是在 UILabel 的视图中换行,就像文本中没有换行符一样。

显而易见的快速解决方案是在代码中为 UILabel 设置文本,或者制作三个 UILabel。那里没问题。我只是对纯粹在 IB 中设置标签时为什么会发生这种情况感到恼火。有人遇到同样的问题吗?

【问题讨论】:

  • 如果您将文本复制并粘贴到 IB 的标签中会发生什么?即在 TextEdit.app 或其他东西中写出来,然后复制进去。
  • 这很奇怪,因为我做了完全相同的事情并且它对我有用,虽然我没有尝试过故事板,只是普通的 XIB。你说如果你在代码中设置它就可以正常工作?
  • 是的,如果我只是编写代码,它会很好用,例如:label.text = @"first line\nSecond line\nThird line" 我想知道这是否是这个新故事板中的错误。我还没有在笔尖上试过。这很奇怪,因为 IB 预览正确显示它,它只是在 sim 中不起作用。我也没有在实际设备上尝试过 - 可能是 sim 卡的问题。
  • 您看过原始 XML 吗?那里的字符串中有新行吗?
  • 有趣的想法。 XML 有实际的换行符,而不是 \n。我尝试将 XML 中的文本字符串替换为由 \n 组成的字符串,但这只是将 IB 中的文本属性替换为如下组成的字符串:“First\nSecond\nThird”,以及 IB 预览和构建产品在sim中以这种方式显示。我现在也尝试在设备上构建和运行,它做同样的事情:带有选项返回的 IB 文本属性正确显示,设备上的构建和 sim 忽略换行符。

标签: ios interface-builder uilabel


【解决方案1】:

这可能应该作为一个错误打开,但是这里有一个解决方法:

而不是 option-Return,使用 control-Return 并点击它两次(在情节提要的文本行之间留下一个空白行)。然后它将在故事板和设备上正确显示。

【讨论】:

    【解决方案2】:

    通过使用标签的这个属性,

    label.lineBreakMode=UILineBreakModeCharacterWrap;
    label.numberOfLines=0;
    

    我们可以添加一堆文本。请看下面的截图。

    【讨论】:

    • 请考虑在此处为代码添加简短说明。代码本身不清楚。
    • 这是一个简短的解释,在标签中(蓝色)我只是给出了一个段落来理解换行符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2017-03-27
    • 1970-01-01
    相关资源
    最近更新 更多