2012-10-08 5 views
6

UILabelまたはUITextViewを太字と通常のテキストの内側に作成しようとしています。太字と通常のテキストを含むUILabelまたはUITextViewを作成するにはどうすればよいですか?

私は属性文字列を使用しましたが、カスタムセルのラベルにこれを設定しても、テキストは表示されません。

私はUITextView setContentToHTMLString:メソッドも使用しましたが、ドキュメント化されていないため、アプリケーションは拒否されます。

誰もがこれに何らかの解決策を与えることができますか?

+0

wow ...私は質問が「コミュニティウィキ」(数分で9つの改訂版)になりました。 –

+1

この質問がコミュニティのwikiに変換された理由はまだ分かりません。 – Krishnabhadra

答えて

5

使用「NSAttributedString

NSString *string1 = @"Hi"; 

NSString *string2 = @"How are you ?"; 

NSMutableAttributedString *attr1 = [NSMutableAttributedString attributedStringWithString:string1]; 

[attr1 setFont:[UIFont systemFontOfSize:20]]; 

NSMutableAttributedString *attr2 = [NSMutableAttributedString attributedStringWithString:string2] 

[attr2 setFont:[UIFont boldSystemFontOfSize:20]]; 

[attr1 appendAttributedString:attr2] 

CATextLayer *textLayer = [CATextLayer layer]; 

layer.string = attr1; 

layer.contentsScale = [[UIScreen mainScreen] scale]; 

(Your_text_label).layer = textLayer; 

OR (if you want to render on a view directly) 

[(Your_View_Name).layer addSublayer:textLayer]; 
5

iOS 6.0までは、通常のUILabelやUITextViewではできませんでしたが、いくつかのオープンソースソリューションでNSAttributedStringオブジェクトを使用することができます。

TTAttributedLabelまたはOHAttributedLabelのようになります。

iOS SDKに組み込まれている1つのソリューションyou could also use a CATextLayer which has a string property that can be set to a NSAttributedString

下記のコメント者のように、はい、"attributedText" propertyでこれを行うことができます。ホレイ!

だけ#import "NSAttributedString+Attributes.h"

し、それを実装します。それをレンダリングするための単一のラベル&使用CATextLayerに複数のフォントテキストを設定する(Appleは開発者の非常に頻繁に繰り返される機能要求を聴くための)

+0

UILabelはiOS 6のNSAttributedStringと互換性があります。 – Eiko

+0

あなたは実際には、通常のUILabelsとUITextViewで、iOS 6の 'attributedText'プロパティを使ってこれを行うことができます –

+0

私はiOS 5以降を使用していますが、これはiOS 5でサポートされますか? – Rocker

1

私はこれが古いスレッドだと知っていますが、これは私自身が発見したものです。少なくともXcodeバージョン4.6.3では、これはアトリビュートtextViewを使用することで可能です。より良いことは、Interface Builderですべてを行うことができるということです! は今、あなたの希望のテキスト を入力し、「帰属」する目的の場所 であなたのTextViewがTextViewのテキストを変更 のTextViewを選択し、ユーティリティパネルの下に[属性]タブを開き

場所:ここ

は手順です太字、下線などの任意のテキストをハイライトします。 fontNameの隣にある "T"ボタンをクリックしてください ポップアップで、目的の書体(例:太字) を選択します。 お楽しみください!

0

インスペクタで属性付きテキストを編集する際に問題が発生した場合は、テキストをリッチテキストエディタにコピー/ペーストして調整し、textView TextオプションをAttributedに切り替えて貼り付けます。ヴワラ。

1

次のコードは、iOS 6.0以上のコードです。その結果、「これは太字です」というテキストは太字で、「これは太字ではありません」となります。通常のテキストになります。

if ([self.registrationLabel respondsToSelector:@selector(setAttributedText:)]) 
{ 
    // iOS6 and above : Use NSAttributedStrings 
    const CGFloat fontSize = 17; 
    UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize]; 
    UIFont *regularFont = [UIFont systemFontOfSize:fontSize]; 
    //UIColor *foregroundColor = [UIColor clearColor]; 

    // Create the attributes 
    NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys: 
           boldFont, NSFontAttributeName, nil]; 
    NSDictionary *subAttrs = [NSDictionary dictionaryWithObjectsAndKeys: 
           regularFont, NSFontAttributeName, nil]; 
    const NSRange range = NSMakeRange(0,12); // range of " 2012/10/14 ". Ideally this should not be hardcoded 

    // Create the attributed string (text + attributes) 
    NSString *text = @"This is bold and this is not bold.; 
    NSMutableAttributedString *attributedText = 
    [[NSMutableAttributedString alloc] initWithString:text 
              attributes:subAttrs]; 
    [attributedText setAttributes:attrs range:range]; 

    // Set it in our UILabel and we are done! 
    [self.registrationLabel setAttributedText:attributedText]; 
} 
関連する問題