0

私はこのコードを持っていて、それは機能しています(https://stackoverflow.com/a/3586943/1187014からの回答)が、少し変更してみたいと思います:

NSString *text = @"Forgot password?";

if ([_labelForgotPassword respondsToSelector:@selector(setAttributedText:)])
{
    // iOS6 and above : Use NSAttributedStrings
    const CGFloat fontSize = 13;
    UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize];
    UIFont *regularFont = [UIFont systemFontOfSize:fontSize];
    UIColor *foregroundColor = [UIColor whiteColor];

    // Create the attributes
    NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:
                           boldFont, NSFontAttributeName,
                           foregroundColor, NSForegroundColorAttributeName, nil];
    NSDictionary *subAttrs = [NSDictionary dictionaryWithObjectsAndKeys:
                              regularFont, NSFontAttributeName, nil];
    const NSRange range = NSMakeRange(16,0);

    // Create the attributed string (text + attributes)
    NSMutableAttributedString *attributedText =
    [[NSMutableAttributedString alloc] initWithString:text
                                           attributes:attrs];
    [attributedText setAttributes:subAttrs range:range];

    // Set it in our UILabel and we are done!
    [_labelForgotPassword setAttributedText:attributedText];
} else {
    // iOS5 and below
    // Here we have some options too. The first one is to do something
    // less fancy and show it just as plain text without attributes.
    // The second is to use CoreText and get similar results with a bit
    // more of code. Interested people please look down the old answer.

    // Now I am just being lazy so :p
    [_labelForgotPassword setText:text];

}

複数のテキストがある場合は、次のように言いましょう。

NSString *text1 = @"Forgot password?"; // relates with UILabel _labelForgotPassword
NSString *text2 = @"I agree with terms and condition"; // relates with UILabel _labelTerms
NSString *text3 = @"Your country is not listed yet?"; // relates with UILabel _labelCountry

私の頭に浮かんだ最初の方法は、IFをネストすることですが、属性を付ける必要があるテキストがたくさんある場合、ネストされたIFは非常に見苦しくなりますよね?

したがって、そのコードをメソッドに作成して、文字列、_label の名前、範囲などを指定し、結果を特定の UILabel に返す方法を説明します。そしてそれはすべてviewDidLoadの下でトリガーされます。ボタンを押したり、他の何かによってではありません。

ありがとうございました。

4

1 に答える 1

0

私が理解しているのは、同じ属性付きロジックをすべてのラベルに適用したいということです。UILabel のみに使用する場合は、UILabel にカテゴリを作成できます。

カテゴリの構文は次のようになります。

+(NSMutableAttributedString *) convertToAttributedText: (NSString *) text withFont: (UIFont *) font
{
   // write the above logic here
   //return the attributed text;
}

text1 / text2 / text3 をこの API に渡すと、属性付きのテキストが取得されます。

label.attributedtext = [NSString convertToAttributedText: text withFont:font];

この API パラメータは、必要に応じて構成できます。

お役に立てれば。

于 2013-09-16T06:27:42.583 に答える