10

我现在使用 Xcode4.5 和 iOS6,iOS6 改变了 UILable 的 textAlignment,

label.textAlignment = NSTextAlignmentJustified;

该代码将在带有 ios6 SDK 的 iPhone 6.0 模拟器上崩溃。但不会在带有 iOS6 SDK 的 iPhone 5.0 模拟器上崩溃。

iOS6支持NSTextAlignmentJustified,但是为什么会crash呢?

4

2 回答 2

10

编辑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 预发布文档

于 2013-02-17T07:51:02.390 回答
5

我找到了一种在 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;

希望有帮助;)

于 2013-11-29T10:47:01.950 回答