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

  • andony5589

    andony5589

    7 Aralık 2011
  • Muse

    Muse

    28 EYLÜL 2006
  • technodromeband's channel

    technodromeb

    28 NİSAN 2011