NSTextAlignmentJustified在iOS7中不起作用

时间:2013-10-08 15:48:03

标签: ios7 nsattributedstring

我有一个使用NSTextAlignmentJustified NSAttributedString的应用。在 iOS 6 中,一切都运行良好。但是在 iOS 7 中运行的相同应用程序(模拟器或设备没有任何区别)显示没有任何Justify。此外,从 iOS 6 7 ,线条间距也发生了巨大变化。

其他人遇到过这个问题?有没有办法在iOS 7中制作合理的Textblock(在iOS 6中也可以使用?)

此致 马库斯

3 个答案:

答案 0 :(得分:27)

好的,我找到了一种在iOS 7中制作标签Justify的方法: 我只是将NSBaselineOffsetAttributeName设置为0。

不知道它为什么有效,但它确实有效。

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
    paragraphStyle.alignment = NSTextAlignmentJustified;

NSAttributedString *string = [[NSAttributedString alloc] initWithString:rawString 
          attributes:[NSDictionary dictionaryWithObjectsAndKeys:
          paragraphStyle, NSParagraphStyleAttributeName , 
          [NSNumber numberWithFloat:0],NSBaselineOffsetAttributeName, 
          nil]];

答案 1 :(得分:8)

firstLineHeadIndent上设置NSMutableParagraphStyle也会有效。

NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init];
paragraphStyles.alignment                = NSTextAlignmentJustified;    // To justified text
paragraphStyles.firstLineHeadIndent      = 0.05;    // IMP: must have a value to make it work

NSString *stringTojustify                = @"No one wakes up excited to see more advertising, no one goes to sleep thinking about the ads they’ll see tomorrow.";
NSDictionary *attributes                 = @{NSParagraphStyleAttributeName: paragraphStyles};
NSAttributedString *attributedString     = [[NSAttributedString alloc] initWithString:stringTojustify attributes:attributes];

self.lblQuote.attributedText             = attributedString;
self.lblQuote.numberOfLines              = 0;
[self.lblQuote sizeToFit];

答案 2 :(得分:1)

只是为了记录,你还可以追加一个' \ n'作为普通UILabel的第一个角色。

        self.text = [NSString stringWithFormat:@"\n%@",TextString];
        {
            CurFrame.origin.y -= FontSize;
            self.frame = CurFrame;
        }
        self.textAlignment = NSTextAlignmentJustified;