12

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

还有其他人遇到过这个问题吗?有什么方法可以在 iOS 7 中创建一个合理的文本块(在 iOS 6 中也可以使用?)

问候, 马库斯

4

3 回答 3

27

好的,我找到了一种在 iOS 7 中制作标签 Justifiy 的方法:我只需将 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]];
于 2013-10-18T09:04:26.607 回答
8

设置也将起作用firstLineHeadIndentNSMutableParagraphStyle

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];
于 2014-02-21T04:47:48.793 回答
1

只是为了记录,您还可以附加一个 '\n' 作为普通 UILabel 的第一个字符。

        self.text = [NSString stringWithFormat:@"\n%@",TextString];
        {
            CurFrame.origin.y -= FontSize;
            self.frame = CurFrame;
        }
        self.textAlignment = NSTextAlignmentJustified;
于 2014-09-09T12:04:52.997 回答