我有一个NSTextAlignmentJustified
用于NSAttributedString
. 在iOS 6中,一切都运行良好。但是在iOS 7中运行的同一个应用程序(模拟器或设备没有区别)根本没有显示任何 Justify。此外,行距似乎从iOS 6到7发生了巨大变化。
还有其他人遇到过这个问题吗?有什么方法可以在 iOS 7 中创建一个合理的文本块(在 iOS 6 中也可以使用?)
问候, 马库斯
我有一个NSTextAlignmentJustified
用于NSAttributedString
. 在iOS 6中,一切都运行良好。但是在iOS 7中运行的同一个应用程序(模拟器或设备没有区别)根本没有显示任何 Justify。此外,行距似乎从iOS 6到7发生了巨大变化。
还有其他人遇到过这个问题吗?有什么方法可以在 iOS 7 中创建一个合理的文本块(在 iOS 6 中也可以使用?)
问候, 马库斯
好的,我找到了一种在 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]];
设置也将起作用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];
只是为了记录,您还可以附加一个 '\n' 作为普通 UILabel 的第一个字符。
self.text = [NSString stringWithFormat:@"\n%@",TextString];
{
CurFrame.origin.y -= FontSize;
self.frame = CurFrame;
}
self.textAlignment = NSTextAlignmentJustified;