SORU
14 AĞUSTOS 2010, CUMARTESİ


Nasıl NSAttributedString kullanıyor musunuz?

NSString NSMutableStrings birden çok renk mümkün değildir. İle tanıtıldı NSAttributedString hakkında biraz duydumiPad SDK 3.2(veya 3.2) ve kullanılabilir olarak iPhoneiPhone SDK 4.0 beta.

Üç rengi olan bir dize istiyorum.

Neden ben kullanmıyorum 3 ayrı NSStrings, çünkü uzunluğu her üç NSAttributedString dizeleri olacak sık sık değişen ve bu yüzden tercih ederim kullanmamaya herhangi bir hesaplama için yeniden pozisyon 3 ayrı NSString nesneler.

Eğer mümkünse NSAttributedString kullanarak nasıl aşağıdaki - (NSAttributed dize ile mümkün bunu nasıl yapardın) yapabilirim:

alt text

Düzenleme: , @"first", @"second" @"third" unutmayın, herhangi bir zamanda, diğer dizeleri ile değiştirilecektir. Yani kodlanmış NSRange değerleri kullanarak çalışmaz.

CEVAP
14 AĞUSTOS 2010, CUMARTESİ


Bina dizeleri atfedilen zaman, değişken alt sınıf, sadece bir şeyleri temiz tutmak için kullanmayı tercih ederim.

Bu varlık, Üç Renkli bir oluşturmak nasıl dize atfedilen " dedi

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"firstsecondthird"];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,5)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(5,6)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(11,5)];

bir tarayıcıda yazılmış.uyarı uygulayıcı

Belli ki zor kod bu şekilde aralıkları gitmiyorsun. Gibi bir şey yapabilirsin onun yerine belki de:

NSDictionary * wordToColorMapping = ....;  //an NSDictionary of NSString => UIColor pairs
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@""];
for (NSString * word in wordToColorMapping) {
  UIColor * color = [wordToColorMapping objectForKey:word];
  NSDictionary * attributes = [NSDictionary dictionaryWithObject:color forKey:NSForegroundColorAttributeName];
  NSAttributedString * subString = [[NSAttributedString alloc] initWithString:word attributes:attributes];
  [string appendAttributedString:subString];
  [subString release];
}

//display string

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012