2013-08-21 18 views
68

NSAttributedString sadece benim için gerçekten aşılamaz.İki farklı yazı tipi boyutuna sahip NSAttributedString örneği?

Farklı boyutlarda bir metin girmek için UILabel ayarlamak istiyorum ve NSAttributedString yolunu buluyorum, ancak bununla ilgili belgelerin hiçbir yerinde bulamıyorum.

Eğer birisi bana somut bir örnekle yardım ederse çok sevinirim. Örneğin

, en istediğim metin olduğunu varsayalım:

(in small letters:) "Presenting The Great..." 
(in huge letters:) "HULK HOGAN!" 

birileri nasıl yaptığını bana gösterebilir misin? Ya da, kendim için öğrenebileceğim sade ve basit bir referans mı? Yemin ederim bunu belgelere ve hatta Stack Overflow'taki diğer örneklere kadar anlamaya çalıştım ve bunu anlamıyorum.

cevap

150

...

NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"]; 
[hogan addAttribute:NSFontAttributeName 
       value:[UIFont systemFontOfSize:20.0] 
       range:NSMakeRange(24, 11)]; 

Bu 20 maddelik metinde geçen iki kelime koyacaktır; dizenin geri kalanı varsayılan değeri kullanacaktır (12 punto olduğuna inanıyorum). Metin boyutunu ayarlama konusunda kafa karıştırıcı olabilecek şey, ve yazı tiplerini aynı anda ayarlamanız gerektiğidir - her bir UIFont nesnesi, bu özelliklerin her ikisini de kapsülleyecektir.

+0

SWIFT aralıkları için bu cevabı inceleyin: http://stackoverflow.com/a/27041376/1736679 – Efren

0

Kolay bir şekilde yapmak istiyorsanız, NSAttributedString üzerinde bir kategori sağlayan kullanıyorum OHAttributedLabel adlı bir git repo var. Eğer, bir 3. parti lib kullanın atfedilen dizeleri ile başlamak için nasıl iyi bir öğretici için this link kontrol etmek istemiyorsanız

NSMutableAttributedString *mystring = [[NSMutableAttributedString alloc] initWithString:@"My String"]; 
[mystring setTextColor:[UIColor colorWithRGB:78 green:111 blue:32 alpha:1]]; 
mystring.font = [UIFont systemFontOfSize:14]; 

: Bu gibi şeyler yapalım. Böyle bir şey yapacağını

14

Swift 3 Çözüm Ayrıca

, bunun yerine objc veya Swift içinde indeksleri belirtme append işlevini kullanabilirsiniz:

let attrString = NSMutableAttributedString(string: "Presenting The Great...", 
              attributes: [ NSFontAttributeName: UIFont.systemFont(ofSize: 20) ]) 

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!", 
              attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 40) ])) 
1

Swift 4, sen yapardın:

let attrString = NSMutableAttributedString(string: "Presenting The Great...", 
             attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 18)])); 

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!", 
             attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)])); 
İlgili konular