2013-04-12 3 views
3

Я бы хотел, чтобы первая буква UILabel имела другой размер шрифта от других, размер нескольких шрифтов больше. Необходимо руководствоваться тем, как это сделать. У ярлыка много слов.Увеличение размера шрифта первой буквы в UILabel.text

Это то, что я пробовал:

NSArray * words = [Label.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
NSString *firstLetter = [[words objectAtIndex:0] substringToIndex:1]; 

Но застрял в увеличении размера NSString. Есть ли способ лучше? Я радушны для предложений и руководство .. Спасибо ..

EDIT:

[Label setFont:[UIFont fontWithName:@"Arial" size:12.f]]; 
NSArray * words = [Label.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
UIFont *fontFirst=[UIFont fontWithName:@"Arial" size:15.f]; 
NSDictionary *attrsDictFirst=[NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; 
NSAttributedString *finalString=[[NSAttributedString alloc] initWithString:[[words objectAtIndex:0] substringToIndex:1] attributes:attrsDictFirst]; 
+0

Если вам нужна только iOS 6 или более поздняя версия, используйте 'UILabel attribittedText'. Если вам нужно поддерживать iOS 5 или ранее, вы не можете иметь более одного шрифта в 'UILabel'. – rmaddy

+0

Я подозреваю, что вы должны использовать приписанный текст. (Или разделите его на две метки.) –

ответ

5

Чтобы получить, к примеру, это:

enter image description here

Скажем так:

NSString* s2 = @"Fourscore and seven years ago, our fathers brought forth " 
    @"upon this continent a new nation, conceived in liberty and dedicated " 
    @"to the proposition that all men are created equal."; 
NSMutableAttributedString* content2 = 
    [[NSMutableAttributedString alloc] 
    initWithString:s2 
    attributes: 
     @{ 
      NSFontAttributeName: 
       [UIFont fontWithName:@"HoeflerText-Black" size:16] 
     }]; 
[content2 setAttributes: 
    @{ 
     NSFontAttributeName:[UIFont fontWithName:@"HoeflerText-Black" size:24] 
    } range:NSMakeRange(0,1)]; 
[content2 addAttributes: 
    @{ 
     NSKernAttributeName:@-4 
    } range:NSMakeRange(0,1)]; 

NSMutableParagraphStyle* para2 = [NSMutableParagraphStyle new]; 
para2.headIndent = 10; 
para2.firstLineHeadIndent = 10; 
para2.tailIndent = -10; 
para2.lineBreakMode = NSLineBreakByWordWrapping; 
para2.alignment = NSTextAlignmentJustified; 
para2.lineHeightMultiple = 1.2; 
para2.hyphenationFactor = 1.0; 
[content2 addAttribute:NSParagraphStyleAttributeName 
       value:para2 range:NSMakeRange(0,1)]; 

Затем назначьте content2 к лейбла attributedText.

+0

Во-первых, спасибо за помощь. может объяснить, что это за строка: NSKernAttributeName: @ - 4 делает? – lakesh

+0

В противном случае большая буква довольно далеко от маленькой буквы, чем следует за ней. Это приводит к тому, что полосы «F» перекрывают «o». – matt

+0

Ваш ответ верный. Боковой вопрос: я добавляю UILabel в Scrollview, и я добавил свой код. Но это не позволяет мне прокручивать. Слова появляются горизонтально и не отображаются вертикально ... – lakesh

2

нужно использовать NSAttributedString. iOS6.0 и выше

После получения первой буквы введите ее в приписанную строку, измените ее размер.

принять остальные строки набор другой размер.

UIFont *font=[UIFont fontWithName:@"Arial" size:12.f]; 
NSDictionary *attrsDict=[NSDictionary dictionaryWithObject:font 
           forKey:NSFontAttributeName]; 
NSAttributedString *attribString=[[NSAttributedString alloc] initWithString:[words[0] substringFromIndex:1] attributes:attrsDict]; 


UIFont *fontFirst=[UIFont fontWithName:@"Arial" size:15.f]; 
NSDictionary *attrsDictFirst=[NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; 
NSAttributedString *firstString=[[NSAttributedString alloc] initWithString:[attribString subStringToIndex:1] attributes:attrsDictFirst]; 

[attribString replaceCharactersInRange:NSMakeRange(0, 1) withString:firstString]; 
+0

Помните, что 'UILabel' поддерживает только атрибутный текст в iOS 6.0 или новее. – rmaddy

+0

как взять остальную часть строки? – lakesh

+0

, как только вы получите attribString, нужно назначить его обратно на ярлык справа? – lakesh