我现在使用 Xcode4.5 和 iOS6,iOS6 改变了 UILable 的 textAlignment,
label.textAlignment = NSTextAlignmentJustified;
该代码将在带有 ios6 SDK 的 iPhone 6.0 模拟器上崩溃。但不会在带有 iOS6 SDK 的 iPhone 5.0 模拟器上崩溃。
iOS6支持NSTextAlignmentJustified,但是为什么会crash呢?
我现在使用 Xcode4.5 和 iOS6,iOS6 改变了 UILable 的 textAlignment,
label.textAlignment = NSTextAlignmentJustified;
该代码将在带有 ios6 SDK 的 iPhone 6.0 模拟器上崩溃。但不会在带有 iOS6 SDK 的 iPhone 5.0 模拟器上崩溃。
iOS6支持NSTextAlignmentJustified,但是为什么会crash呢?
编辑1:
使用NSAttributedString
我们可以证明文本。
NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init];
paragraphStyles.alignment = NSTextAlignmentJustified;
paragraphStyles.firstLineHeadIndent = 0.05; // Very IMP
NSString *stringTojustify = @"We are what our thoughts have made us; so take care about what you think. Words are secondary. Thoughts live; they travel far.";
NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyles};
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:stringTojustify attributes:attributes];
self.lblQuote.attributedText = attributedString;
self.lblQuote.numberOfLines = 0;
[self.lblQuote sizeToFit];
已弃用UITextAlignmentJustify
,在 iOS 6 下不再可用。
此SO 链接中提供了所有可能的对齐文本解决方案,还请查看此页面和iOS6 预发布文档。
我找到了一种在 iOS 7 中制作标签 Justifiy 的方法:我只需将 NSBaselineOffsetAttributeName 设置为 0。
不知道为什么需要在 iOS 7 上添加此基线设置(它在 iOS 6 上运行良好)。
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.alignment = NSTextAlignmentJustified;
NSDictionary *attributes = @{ NSParagraphStyleAttributeName : paragraph,
NSFontAttributeName : self.textLabel.font,
NSBaselineOffsetAttributeName : [NSNumber numberWithFloat:0] };
NSAttributedString *str = [[NSAttributedString alloc] initWithString:content
attributes:attributes];
self.textLabel.attributedText = str;
希望有帮助;)