web-dev-qa-db-ja.com

iOS 7のUITextViewで属性付きテキストの色と配置を設定するにはどうすればよいですか?

TextViewの書式設定はiOS 6では正常に機能しましたが、iOS 7では機能しなくなりました。TextKitを使用すると、内部の多くのものが変更されたことがわかります。それは非常に紛らわしいものになっており、私は誰かがこれと同じくらい簡単なことで私を助けることによって少しそれをまっすぐにするのを手伝ってくれることを望んでいます。

私の静的UITextViewには、元々textColorおよびtextAlignmentプロパティの値が割り当てられていました。それからNSMutableAttributedStringを作成し、それに属性を割り当て、それをtextViewのattributedTextプロパティに割り当てました。位置合わせと色は、iOS 7では有効になりません。

どうすれば修正できますか?これらのプロパティが効果を発揮しない場合、なぜそれらはもはや存在するのでしょうか? textViewの作成は次のとおりです。

UITextView *titleView = [[UITextView alloc]initWithFrame:CGRectMake(0, 90, 1024, 150)];
titleView.textAlignment = NSTextAlignmentCenter;
titleView.textColor = [UIColor whiteColor];

NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
[title addAttribute:NSParagraphStyleAttributeName value:font range:NSMakeRange(0, title.length)];
titleView.attributedText = title;

[self.view addSubview:titleView];
33
Joe

奇妙なことに、プロパティはUILabelについては考慮されますが、UITextViewについては考慮されません

フォントを使用する方法と同様に、属性付き文字列に色と配置の属性を追加しないのはなぜですか?

何かのようなもの:

NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
[title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];

//add color
[title addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, title.length)];

//add alignment
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setAlignment:NSTextAlignmentCenter];
[title addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)];

titleView.attributedText = title;

編集:最初にテキストを割り当ててから、プロパティとこの方法で変更します。

UITextView *titleView = [[UITextView alloc]initWithFrame:CGRectMake(0, 90, 1024, 150)];

//create attributed string and change font
NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
[title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];

//assign text first, then customize properties
titleView.attributedText = title;
titleView.textAlignment = NSTextAlignmentCenter;
titleView.textColor = [UIColor whiteColor];
66
jlhuertas