2015-12-04 6 views
7

मैं एक स्ट्रिंग जो स्ट्रिंग के अंत में कोई खाली स्थान के है लेकिन जब मैं NSAttributedString में कनवर्ट कर रहा हूँ और UITextView करने के लिए सेट यह UILabel के अंत में कुछ खाली स्थान के देखा गया था है ।कैसे ट्रिम करने के लिए (निकालने के लिए) एक NSAttributedString के अंत से सफेद रिक्त स्थान

NSAttributedString बनाने के लिए मैं निम्नलिखित कोड का उपयोग कर रहा हूं। मेरे कोड में expectedLabelSize एक बड़ी ऊंचाई देता है।

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

अपने प्रश्न को 'स्ट्रिंग' शुरू करने वाले कोड के साथ अपडेट करें। आपका प्रश्न 'UITextView' के बारे में क्यों बात करता है? आपका पोस्ट कोड टेक्स्ट व्यू का कोई उल्लेख नहीं करता है। और 'उइलाबेल' को इस सवाल के साथ क्या करना है? इसका 'अपेक्षित लेबल आकार' पर कोई असर नहीं है। – rmaddy

+0

क्या आपने को 0 पर सेट करने का प्रयास किया था और फिर आकार को फ़िट करने का प्रयास किया था? –

उत्तर

7

स्विफ्ट जवाब लेकिन अगर आप (तब या बस अपने Obj सी में इस्तेमाल के लिए विस्तार के साथ एक तेज फ़ाइल बनाने) Obj सी में अनुवाद तो यह आपको एक शुरुआत

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) 
    } 
} 

प्रयोग :

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

धन्यवाद डीन, शानदार। मैंने नवीनतम स्विफ्ट के लिए मामूली बदलावों में संपादित किया। बहुत अच्छे धन्यवाद – Fattie

संबंधित मुद्दे