标记iOS 6的多线怪异行为(iOS 6有更多的垂直空间)

时间:2014-01-22 06:56:47

标签: objective-c ios6 ios7 uilabel multiline

我想在UILabel中写4行,所以我在编辑器中为numberoflines写了0行。

以下是我在ViewController中的内容

enter image description here

当我在iOS6中运行时

enter image description here

当我在iOS7中运行时

enter image description here

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

如何在iOS 6中拥有4行?

4 个答案:

答案 0 :(得分:1)

这很奇怪......

[introText sizeToFit];做了这个伎俩

答案 1 :(得分:1)

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

 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];
 }

答案 2 :(得分:0)

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

如果您尝试在同一个属性字符串中使用多个不同的属性,那么很多错误都会出现 - 就他们自己而言,它们会正确呈现。

答案 3 :(得分:0)

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