10

私は現在Xcode4.5とiOS6を使用しています.iOS6はUILableのtextAlignmentを変更しました.

label.textAlignment = NSTextAlignmentJustified;

このコードは、ios6 SDK を使用する iPhone 6.0 シミュレーターでクラッシュします。ただし、iOS6 SDK を使用した iPhone 5.0 シミュレーターではクラッシュしません。

iOS6 は NSTextAlignmentJustified をサポートしていますが、なぜクラッシュするのでしょうか?

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];

ここに画像の説明を入力してください

の非推奨。iOS6UITextAlignmentJustifyでは使用できなくなりました。

正当化されたテキストに対するすべての可能な解決策は、この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 に答える