【发布时间】: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