2015-08-11 38 views
6

Bu tür bir metin biçiminde UILabel nasıl oluşturulur? NSAttributedString kullanır mısınız? sekme durakları ileNSAttributedString sekmeli

enter image description here

+0

http://stackoverflow.com/questions/6699930/how-can-i-use-the-t-tab-operator-to-format-a-nsstring-in-columns – Mattias

+2

Bu düzen ile ilgili daha fazlası karakter öznitelikleri, bu yüzden 'NSAttributedString' için uygun bir şey olduğunu düşünmüyorum. – trojanfoe

+0

Düzen kısıtlamalarını kullanmayı düşünmelisiniz. – WMios

cevap

16

NSAttributedString metin sütunlar oluşturabilirsiniz. Bu, aynı işlemciye sahip bir kelime işlemcide nasıl yapıldığına benzer.

Screenshot of label rendering the above attributed string

tabStops

let text = "Name\t: Johny\nGender\t: Male\nAge\t: 25\nFavourites\t: Reading, writing" 

let paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.tabStops = [NSTextTab(textAlignment: NSTextAlignment.Left, location: 150, options: [:])] 
paragraphStyle.headIndent = 150 

label.attributedText = NSAttributedString(string: text, attributes: [NSParagraphStyleAttributeName: paragraphStyle]) 
her sekmede arkasına metin devam etmek nereye noktası pozisyonları sağlar. Burada ilk sütundan sonra makul bir noktada bir sekme yaptık. headIndent, sarılmış metnin belirli bir miktarda girintiye ihtiyaç duyduğu etiketi söyler, böylece sonraki satıra kaydırılır. Bu yaklaşım ile

sınırlamaları şunlardır: ne istediğini bilmek gerekir böylece

  1. sekme durağı yeri sabit bir nokta değeridir. Seçtiğiniz değer, bazı satırlar için ilk sütunun genişliğinden azsa, bu çizgiler farklı bir konuma girer.
  2. Sarma işlemi, son sütununuz sararsa gerçekten işe yarar. İkinci sütununuz ":" tarafından başlatıldığından, sadece headIndent'nu artırabilir veya ":" yi \t:\t olacak şekilde bölmek ve ikinci bir sekme durağı ayarlamak isteyebilirsiniz. Metin kaydırmaya izin vermiyorsanız, bu bir sorun değildir.

Bu sınırlamalar çok kısıtlayıcıysa, etiketinizi otomatik düzen kısıtlamaları olan birden çok etiketin bir koleksiyonu olarak yeniden yapılandırabilirsiniz.

İlgili konular