6

背景:通常のフォントと同様に、太字と斜体のフォントで文を表示しようとしています。

質問:「こんにちは、私の名前はバイトです」のようなものを表示するにはどうすればよいですか。Byteは太字と斜体の両方であり、他の単語は通常のままであることに注意してください。

私は試しました:coreTextはその線に沿って何かを行うことができるはずだと思いますが、それを行う正しい方法を見つけることができませんでした。また、TTTAttributeLabelを使用しましたが、太字と斜体の両方にすることはできません。Three20をロードしましたが、どちらを使用するのか、何を使用するのかわかりません。Webviewが私のバックグラウンドで動作しません。


Carles Estevadeordalへの返信として

UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(10, 360, 300, 40)];
[webView setBackgroundColor: [UIColor clearColor]];
[webView loadHTMLString:[NSString stringWithFormat:@"<html><body style=\"background-color: transparent;\">Hello, my name is <b><i>Byte</b></i></body></html>"] baseURL:nil];
[self.view addSubview:webView];

これはまさに私が使用したコードです。背景は白でした。

4

5 に答える 5

7

ぐっすり眠った後、 TTTAtributedlabelを使用してそれを行う方法を見つけました。方法は次のとおりです。

TTTAttributedLabel *attLabel = [[TTTAttributedLabel alloc]initWithFrame:CGRectMake(x, y, xx, yy)];
NSString *text = @"Hello, my name is Byte";

[attLabel setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^(NSMutableAttributedString *mutableAttributedString) {

    //font helvetica with bold and italic 
    UIFont *boldSystemFont = [UIFont fontWithName:@"Helvetica-BoldOblique" size:10];

    CTFontRef font = CTFontCreateWithName((__bridge CFStringRef)boldSystemFont.fontName, boldSystemFont.pointSize, NULL);

    NSRange boldRange = [[mutableAttributedString string] rangeOfString:@"Byte" options:NSCaseInsensitiveSearch];
    [mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(__bridge id)font range:boldRange];

    CFRelease(font);

    return mutableAttributedString;
}];

同じ単語/文字に 2 つの属性 (太字と斜体を別々に) を追加する方法がまだありません。しかし、これはトリックを行います。

于 2012-04-10T20:47:16.040 に答える
2

この問題に対する CoreText ソリューションに引き続き関心がある場合:

newFont = CTFontCreateCopyWithSymbolicTraits(fontRef,
                                             self.textSize,
                                             NULL,
                                             kCTFontBoldTrait | kCTFontItalicTrait,
                                             kCTFontBoldTrait | kCTFontItalicTrait);

[attrString addAttribute:(NSString*)kCTFontAttributeName
                   value:(id)newFont
                   range:[copyString rangeOfString:customText.text]];
于 2013-01-10T14:10:15.553 に答える
1

2 つの属性を追加するには (これは非 ARC コードです):

#define kLabelFontSize 16.0

NSString labelString = @"Let's slide loudly";

[self.tttLabel setText:labelString afterInheritingLabelAttributesAndConfiguringWithBlock:^NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) {

    UIFont *boldSystemFont = [UIFont boldSystemFontOfSize:kLabelFontSize];
    CTFontRef boldFont = CTFontCreateWithName((CFStringRef)boldSystemFont.fontName, boldSystemFont.pointSize, NULL);
    if (boldFont) {
        [mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(id)boldFont range:NSMakeRange(6, 11)];
        CFRelease(boldFont);
    }

    UIFont *italicSystemFont = [UIFont italicSystemFontOfSize:kLabelFontSize];
    CTFontRef italicFont = CTFontCreateWithName((CFStringRef)boldSystemFont.fontName, italicSystemFont.pointSize, NULL);
    if (italicFont) {
        [mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(id)italicFont range:NSMakeRange(12, 18)];
        CFRelease(italicFont);
    }

    }];

    return mutableAttributedString;
}];
于 2012-04-11T15:25:36.420 に答える
0

文の形式が固定されている場合、最も簡単な解決策は、2つの異なるUILabelを使用することです。1つは通常のフォントを使用し、もう1つは太字と斜体のフォントを設定します。

文が動的である場合は、UIWebViewオブジェクトをラベルとして使用し、テキストと<b> <i> </ i></b>フィールドを必要なときにその場所に設定して単純なWebページをロードする必要があります。次のような太字と斜体:

[myWebViewLabel loadHTMLString:[NSString stringWithFormat:@"<html><body style=\"background-color: transparent;\">Hello, my name is <b><i>Byte</b></i></body></html>"] baseURL:nil];

お役に立てば幸いです。

于 2012-04-09T22:16:32.463 に答える