7

下の画像のように、UILable テキスト フォント スタイルを Small-Caps 形式で設定したいと考えています。

どなたかご存知でしたら解決方法を教えてください

ここに画像の説明を入力

ありがとう。:)

4

7 に答える 7

11

私があなたを誤解していなければ、これはあなたが望むものですか?

NSString *uppercaseString = [yourString uppercaseString];
于 2012-01-16T09:34:00.940 に答える
3

iOS 7 のカスタム フォントについては、Anthony Mattox によってメソッドが説明されています。システムフォントについては、方法がわかりません。

iOS でフォ​​ントを小文字でタイプセットする

于 2014-03-04T10:29:28.603 に答える
3

iOS で使用できるフォントには「大文字スタイル」がありません。独自のフォントを追加するか、関数 CTFontDescriptorCreateCopyWithFeature を使用してフォントを作成してみてください。
最も簡単な方法は、フォント サイズが混在する属性付き文字列 (NSAttributedString) を作成することだと思います。

于 2012-01-16T09:56:41.023 に答える
1

あなたはこれで試すことができます

NSString* str=@"mudit"; label.text=[str uppercaseString];

次のような出力が得られます:MUDIT

于 2012-01-16T09:40:37.087 に答える
1

各単語の最初の文字が大きい大文字の文字列として UILabel をレンダリングするには、次のようにします。

@implementation CapitalicTextLabel

- (void)drawRect:(CGRect)rect
{

    // Drawing code
    NSArray* words = [self.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetCharacterSpacing(context, 1);
    CGContextSetFillColorWithColor(context, [self.textColor CGColor]);
    CGAffineTransform myTextTransform = CGAffineTransformScale(CGAffineTransformIdentity, 1.f, -1.f );
    CGContextSetTextMatrix (context, myTextTransform);

    CGFloat x = 0;
    float centeredY = (self.font.pointSize + (self.frame.size.height - self.font.pointSize) / 2) - 2;
    CGFloat firstLetterSize = self.font.pointSize * 1.4;

    for (NSString* word in words)
    {
        NSString* letter = [[word substringToIndex:1] uppercaseString];
        CGContextSelectFont(context, [self.font.fontName cStringUsingEncoding:NSASCIIStringEncoding], firstLetterSize, kCGEncodingMacRoman);
        CGContextShowTextAtPoint(context, x, centeredY, [letter cStringUsingEncoding:NSASCIIStringEncoding], [letter length]);
        x = CGContextGetTextPosition(context).x;

        NSString* restOfWord = [[[word substringFromIndex:1] uppercaseString] stringByAppendingString:@" "];
        CGContextSelectFont(context, [self.font.fontName cStringUsingEncoding:NSASCIIStringEncoding], self.font.pointSize,
            kCGEncodingMacRoman);
        CGContextShowTextAtPoint(context, x, centeredY, [restOfWord cStringUsingEncoding:NSASCIIStringEncoding], [restOfWord length]);
        CGPoint v = CGContextGetTextPosition(context);
        x = CGContextGetTextPosition(context).x;
    }

}

@end

この実装は、複数行にわたる分割を処理したり、TextAlignment 設定を尊重したりしません。これは、後で追加するのに十分単純なはずです。

例:

ここに画像の説明を入力

于 2012-12-16T09:36:53.027 に答える
0

これで試してみてください

    NSString *string = @"askdfjgjksdfgh";
NSString *upString = [string uppercaseString];
NSLog(@"U %@", upString);
于 2012-01-16T09:39:52.530 に答える
0

内の個々の文字のフォント サイズまたはタイプを変更することはできませんUILabel

あなたがしたいことは、2 つのラベルを持つことです。1 つは最初の大きな文字用に、もう 1 つはその直後に残りの単語用です。

最初の文字と残りの単語にアクセスするには、次を使用できます。

NSString * word = @"COMPLETED";
NSString * firstLetter = [word substringToIndex:1];
NSString * remainingWord = [word substringFromIndex:1];

写真に写っているものはおそらく言葉の写真であり、UILabels ではありません。

于 2012-01-16T10:07:02.050 に答える