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

  • Kiddyzuzaa

    Kiddyzuzaa

    25 ŞUBAT 2014
  • Machinima

    Machinima

    17 Ocak 2006
  • TheGamer2323

    TheGamer2323

    25 Ocak 2009