ストーリーボードでは、さまざまなフォーマットオプションを使用してラベルのセットをレイアウトします。
それから私はします:
label.text = @"Set programmatically";
そして、すべてのフォーマットが失われます!これはiOS5では正常に機能します。
すべてのフォーマットを再コーディングせずに、テキスト文字列を更新する方法が必要ですか?!
label.attributedText.string
読み取り専用です。
前もって感謝します。
AttributedStringには、そのすべてのフォーマットデータが含まれています。ラベルはフォーマットについて何も知りません。
属性を別の辞書として保存し、attributedStringを変更するときに次のものを使用できます。
[[NSAttributedString alloc] initWithString:@"" attributes:attributes range:range];
他の唯一のオプションは、属性を再度ビルドすることです。
次のコマンドを使用して、属性を辞書として抽出できます。
NSDictionary *attributes = [(NSAttributedString *)label.attributedText attributesAtIndex:0 effectiveRange:NULL];
次に、新しいテキストでそれらを追加し直します。
label.attributedText = [[NSAttributedString alloc] initWithString:@"Some text" attributes:attributes];
これは、ラベルにテキストが含まれていることを前提としています。そうでない場合、クラッシュするため、最初に次のコマンドでチェックを実行する必要があります。
if ([self.label.attributedText length]) {...}
IOSプログラミングは初めてですが、同じ問題にすぐに遭遇しました。 iOSでの私の経験は
S/oを見回して、私は この投稿 に出くわし、その推奨事項に従って、これを使用することになりました:
- (NSMutableAttributedString *)SetLabelAttributes:(NSString *)input col:(UIColor *)col size:(Size)size {
NSMutableAttributedString *labelAttributes = [[NSMutableAttributedString alloc] initWithString:input];
UIFont *font=[UIFont fontWithName:@"Helvetica Neue" size:size];
NSMutableParagraphStyle* style = [NSMutableParagraphStyle new];
style.alignment = NSTextAlignmentCenter;
[labelAttributes addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, labelAttributes.length)];
[labelAttributes addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, labelAttributes.length)];
[labelAttributes addAttribute:NSForegroundColorAttributeName value:col range:NSMakeRange(0, labelAttributes.length)];
return labelAttributes;