下の画像のように、UILable テキスト フォント スタイルを Small-Caps 形式で設定したいと考えています。
どなたかご存知でしたら解決方法を教えてください
ありがとう。:)
下の画像のように、UILable テキスト フォント スタイルを Small-Caps 形式で設定したいと考えています。
どなたかご存知でしたら解決方法を教えてください
ありがとう。:)
私があなたを誤解していなければ、これはあなたが望むものですか?
NSString *uppercaseString = [yourString uppercaseString];
iOS 7 のカスタム フォントについては、Anthony Mattox によってメソッドが説明されています。システムフォントについては、方法がわかりません。
iOS で使用できるフォントには「大文字スタイル」がありません。独自のフォントを追加するか、関数 CTFontDescriptorCreateCopyWithFeature を使用してフォントを作成してみてください。
最も簡単な方法は、フォント サイズが混在する属性付き文字列 (NSAttributedString) を作成することだと思います。
あなたはこれで試すことができます
NSString* str=@"mudit"; label.text=[str uppercaseString];
次のような出力が得られます:MUDIT
各単語の最初の文字が大きい大文字の文字列として 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 設定を尊重したりしません。これは、後で追加するのに十分単純なはずです。
例:
これで試してみてください
NSString *string = @"askdfjgjksdfgh";
NSString *upString = [string uppercaseString];
NSLog(@"U %@", upString);
内の個々の文字のフォント サイズまたはタイプを変更することはできませんUILabel
。
あなたがしたいことは、2 つのラベルを持つことです。1 つは最初の大きな文字用に、もう 1 つはその直後に残りの単語用です。
最初の文字と残りの単語にアクセスするには、次を使用できます。
NSString * word = @"COMPLETED";
NSString * firstLetter = [word substringToIndex:1];
NSString * remainingWord = [word substringFromIndex:1];
写真に写っているものはおそらく言葉の写真であり、UILabel
s ではありません。