2015-12-04 27 views
7

'un sonundaki beyaz boşluklar nasıl kesilir (kaldırılır) Dizenin sonunda boşluk bırakmayan bir dize var ancak NSAttributedString'a dönüştürdüğüm ve UITextView olarak ayarlandığında UILabel'un sonunda bazı boşluklar görüldü .NSAttributedString

NSAttributedString yapmak için aşağıdaki kodu kullanıyorum. Benim kodumda expectedLabelSize büyük bir yükseklik verir.

UILabel *tempLbl = [[UILabel alloc]init]; 
tempLbl.font = txtView.font; 
tempLbl.text = string; 

NSDictionary *dictAttributes = [NSDictionary dictionaryWithObjectsAndKeys: tempLbl.font, NSFontAttributeName, aParaStyle, NSParagraphStyleAttributeName,[UIColor darkGrayColor],NSForegroundColorAttributeName, nil]; 

CGSize expectedLabelSize = [string boundingRectWithSize:maximumLabelSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dictAttributes context: nil].size; 
+0

Sorunuzu 'string''i başlatan kodla güncelleyin. Sorunuz neden bir "UITextView" hakkında konuşuyor? Gönderilen kodunuz metin görünümünden söz etmiyor. Ve “UILAEL” ın soruyla ne ilgisi var? 'BeklenenLabelSize' üzerinde bir etkisi yoktur. – rmaddy

+0

öğesini 0'a ayarlamayı denediniz mi ve daha sonra sizeToFit mi yaptınız? –

cevap

7

Swift cevap ama (o ya da sadece Obj C kullanılmak üzere uzantılı hızlı dosya olun) Obj C çevirmek eğer sana bir başlangıç ​​vermek

extension NSMutableAttributedString { 

    func trimmedAttributedString(set: CharacterSet) -> NSMutableAttributedString { 

     let invertedSet = set.inverted 

     var range = (string as NSString).rangeOfCharacter(from: invertedSet) 
     let loc = range.length > 0 ? range.location : 0 

     range = (string as NSString).rangeOfCharacter(
          from: invertedSet, options: .backwards) 
     let len = (range.length > 0 ? NSMaxRange(range) : string.characters.count) - loc 

     let r = self.attributedSubstring(from: NSMakeRange(loc, len)) 
     return NSMutableAttributedString(attributedString: r) 
    } 
} 

Kullanımı :

let noSpaceAttributedString = 
    attributedString.trimmedAttributedString(set: CharacterSet.whitespacesAndNewlines) 
+0

Teşekkürler Dean, süper. En son Swift için ufak değişikliklerde düzenledim. Harika teşekkürler – Fattie

İlgili konular