【问题标题】:Label multiline weird behavior for iOS 6 (iOS 6 have more vertical space)iOS 6 的标签多行怪异行为(iOS 6 有更多的垂直空间)
【发布时间】:2014-01-22 06:56:46
【问题描述】:

我试图在 UILabel 中写 4 行,所以我在编辑器中将 numberoflines 设为 0。

下面是我在 ViewController 中的内容

当我在 iOS6 中运行时

当我在 iOS7 中运行时

如果你看到,对于 iOS 6,我只得到三行。知道为什么会这样吗?

如何在 iOS 6 中有 4 行?

【问题讨论】:

  • downvoter : 请告诉我有什么问题...

标签: objective-c ios6 ios7 uilabel multiline


【解决方案1】:

这很奇怪……

[introText sizeToFit]; 成功了

【讨论】:

  • 是的,当我在上面添加时,我看到 4 行......但行为不一样......垂直间距差异很小
  • 几周前我遇到了同样的问题,我用另一种方式解决了,我直接设置了行距,如果你想我贴出我的代码
  • 我发布了我的答案 ;)
【解决方案2】:

正如我在评论中所写,几周前我遇到了同样的问题,这是我的解决方案,我根据 systemVersion 为段落样式设置了不同的行距:

 NSString *ver = [[UIDevice currentDevice] systemVersion];
 int ver_int = [ver intValue];

 if (ver_int < 7) {

    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    [paragraphStyle setLineSpacing: 10]; //set line spacing what you what

    NSDictionary *attributes = @{ NSFontAttributeName: labelText.font, NSParagraphStyleAttributeName: paragraphStyle };
    NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:labelText.text attributes:attributes];

    [labelText setAttributedText: attributedString];

 } else {

    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    [paragraphStyle setLineSpacing: 5];

    NSDictionary *attributes = @{ NSFontAttributeName: labelText.font, NSParagraphStyleAttributeName: paragraphStyle };
    NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:labelText.text attributes:attributes];

    [labelText setAttributedText: attributedString];
 }

【讨论】:

  • @FahimParkar 是的,我会试试你的解决方案,我会告诉你它是否同样有效,让我知道这段代码的运行情况;)
  • @FahimParkar 我会尝试 sizeToFit,但我使用了自定义字体,而 sizeToFit 对我来说效果不佳,我更喜欢这个代码
【解决方案3】:

您是否使用属性字符串来调整行距? iOS6 中有很多与属性字符串相关的错误,尤其是与行高和段落间距相关的错误。

如果您尝试在同一个属性字符串中使用多个不同的属性,这些错误中的许多都会出现 - 它们会正确呈现。

【讨论】:

  • 不,我没有使用任何属性字符串.. 只是标签和静态文本
  • 您是否在 Interface Builder 中设置字符串?那里的编辑器允许您配置属性字符串以及“普通”字符串。
【解决方案4】:

由于所有 UI 和字体更改,iOS6 和 iOS7 之间将存在差异。我的猜测是 iOS6 中控件的高度有点太小(可能是一个点),因此即使它也想要,控件也无法换行。尝试稍微扩大高度,看看是否能解决问题。您可能必须使用计算格式化文本将进入的 CGSize 的方法来计算控件的高度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 2013-02-02
    • 1970-01-01
    • 2012-09-13
    • 2014-11-25
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    相关资源
    最近更新 更多