2012-01-16 6 views
6

UILableテキストのフォントスタイルを、以下のようなSmall-Caps形式で設定したいとします。Objective Cでフォントスタイルを変更する(全Caps形式のLableテキストを設定する)

、誰もが知っていればのおかげで、私に

enter image description here

を、このための解決策を教えてください。 :)

+0

私は、画像に表示され、「スコア」「時間を」キャプション「日付完了」などのフォントスタイルをしたいです。 – Raj

+0

あなたのxcodeのフォントファイルを追加します – Leena

+0

フォントはHelvetica Neue Boldですが、フォントを完全に得ることができますが、問題は同じスタイルを得ることができないということです - 問題は私が小文字としてテキストスタイルを設定することを意味します:( – Raj

答えて

11

もし私が間違っていないなら、これはあなたが望むものですか?

NSString *uppercaseString = [yourString uppercaseString]; 
+0

このフォントサイトをアップルストアに提出する場合は、フォントのライセンスも含める必要がありますが、それを忘れないでください。 – aslisabanci

+0

それは別のフォントではありませんが、それはスタイルですフォトショップでAll-Caps形式に変更されましたが、目的のCでこのようなフォントスタイルを変更することが可能であることを知りたいだけです:) – Raj

+0

私が知る限り、コードではこれを行うことはできません。以下の答えのいくつかに記載されているように、いくつかの回避策を試してみることをお勧めします。 – aslisabanci

0

は、あなたがこの

NSStringの* STR = @ "mudit" を試すことができ、この1

​​
+0

既に記載されている – Sarah

+0

フォントスタイルは、テキストに従ってフォント名を設定する必要があります。 – Hiren

1

てみてください。 label.text = [str uppercaseString];

それはあなたにこのような出力が得られます:MUDIT

4

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

+0

実際には、少なくともiOS 6ではそれが間違っています.iOSに含まれるフォントはOS Xに付属するものと同じですが、その多くに小さなキャップなど多くのOpenType機能が含まれています。 –

+0

@レオ、あなたは小さな帽子の使用の例を示すことができますか? – Lucien

+0

iOSのSafariで次のページを開きます。 http://www.w3schools.com/cssref/playit.asp?filename=playcss_font-variant&preval=small-caps iOSには兄弟OSと同じ字体的な機能がありますバツ;しかし、これらの機能をパブリックAPIで使用することははるかに困難です。 –

0

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

あなたがしたいことは、2つのラベルを持つことです.1つは、最初の大きな文字を募集し、もう1つは残りの単語のためのものです。あなたが使用することができ、最初の文字と単語の残りの部分にアクセスするために

:あなたが画像に表示されて何

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

おそらく言葉の絵ではなくUILabel秒です。 UILabelは、各単語の最初の文字が大きくなって、あなたはこのような何かを行うことができます大文字の文字列としてレンダリングするようにするに

1

@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の設定を尊重することができます。これは後で追加するのに十分シンプルでなければなりません。

例:iOSの7カスタムフォントについては

enter image description here

3

は、この方法は、アンソニーMattox氏によって記述されています。システムフォントの場合、私は方法を知らない。

Typesetting a font in small caps on iOS

+0

これは正しい答えです! –

関連する問題