2012-01-16 60 views
6

我想要像下圖那樣設置Small-Caps格式的UILable文本字體樣式。更改目標C中的字體樣式 - (以全部大寫格式設置標籤文本)C

請給我解決這個如果有誰知道,

enter image description here

感謝。 :)

+0

我想要的字體樣式像標題「完成日期」,「拍攝時間」和「分數」,這是在圖像顯示。 – Raj 2012-01-16 09:47:50

+0

在您的xcode中添加字體文件 – Leena 2012-01-16 09:57:35

+0

字體是Helvetica Neue Bold,我可以完美地字體,但問題是,我不能得到相同的風格 - 意味着問題是我不能設置文本樣式爲小型帽子:( – Raj 2012-01-16 10:16:24

回答

11

如果我沒有弄錯你的意思,這是你想要的嗎?

NSString *uppercaseString = [yourString uppercaseString]; 
+0

然後搜索如果你打算把這個提交給蘋果商店,那麼你還需要包含字體的許可證,不要忘記。 – aslisabanci 2012-01-16 09:54:34

+0

這不是一個不同的字體。它是halvtica-bold,但它的風格在Photo-shop中被改爲All-Caps格式,我只是想知道它可以在Objective-C中改變這種字體風格:) – Raj 2012-01-16 09:58:04

+0

就我所知,在代碼中不可能這樣做。您最好嘗試一些解決方法,如下面的一些答案中所述。 – aslisabanci 2012-01-16 10:18:56

0

嘗試與這一個

​​
+0

已經提到 – Sarah 2012-01-16 09:40:54

+0

這是一種字體樣式,您必須根據文字設置字體名稱。 – Hiren 2012-01-16 09:59:37

1

你可以用這個

的NSString *海峽= @ 「mudit」 嘗試; label.text = [str uppercaseString];

它會給你這樣的輸出:MUDIT

4

字體iOS中可沒有「capitalic風格」。您應該添加自己的字體或嘗試使用函數CTFontDescriptorCreateCopyWithFeature創建字體。
我認爲最簡單的方法是使用混合字體大小來構建屬性字符串(NSAttributedString)。

+0

實際上,這是不正確的,至少對於iOS 6來說。iOS中包含的字體與OS X附帶的是相同的變體,並且它們中的很多包括許多OpenType功能,例如小型大寫字母。 – 2013-04-19 15:50:12

+0

@Leo,你能舉一個小帽子的例子嗎? – Lucien 2013-06-05 10:04:22

+0

當然。在iOS上的Safari中打開以下頁面: http://www.w3schools.com/cssref/playit.asp?filename=playcss_font-variant&preval=small-caps iOS能夠使用與其兄弟OS相同的排版功能X;然而,在公共API中使用這些功能要困難得多。 – 2013-06-06 21:27:00

0

無法更改UILabel中單個字母的字體大小或類型。

你想要做的是有兩個標籤,一個在乞求第一個大寫字母,一個在其餘單詞之後。

爲了訪問的第一個字母和單詞的其餘部分你可以使用:

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

你在圖片中看到什麼是可能的話圖片和不UILabel秒。

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設置,這應該是足夠簡單,以後添加。

實施例:

enter image description here

相關問題