2016-08-26 8 views
17

में UILabel में लाइन स्पेसिंग बढ़ाने के लिए कैसे मेरे पास एक लेबल है जिसमें टेक्स्ट की कुछ पंक्तियां हैं और मैं लाइनों के बीच अंतर को बढ़ाना चाहता हूं। दूसरों द्वारा पूछे जाने वाले समान प्रश्न हैं लेकिन समाधान मेरी समस्याओं का समाधान नहीं करते हैं। इसके अलावा मेरे लेबल में पैराग्राफ हो सकते हैं या नहीं भी हो सकते हैं। मैं Swift पर नया हूं। स्टोरीबोर्ड का उपयोग कर कोई समाधान है? या केवल NSAttributedString के माध्यम से यह संभव है?स्विफ्ट

उत्तर

38

प्रोग्रामिंग रूप से निम्नलिखित स्निपेट का उपयोग करके अपने UILabel पर लाइनस्पेसिंग जोड़ें।

let attributedString = NSMutableAttributedString(string: "Your text") 

// *** Create instance of `NSMutableParagraphStyle` 
let paragraphStyle = NSMutableParagraphStyle() 

// *** set LineSpacing property in points *** 
paragraphStyle.lineSpacing = 2 // Whatever line spacing you want in points 

// *** Apply attribute to string *** 
attributedString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attributedString.length)) 

// *** Set Attributed String to your label *** 
label.attributedText = attributedString; 
+0

यह एक त्रुटि "प्रकार 'NSAttributedString' कोई सदस्य 'addAttribute' है का मूल्य" को दर्शाता है। – Sneha

+0

हमें 'NSAutableAttributedString' के बजाय' NSAttributedString' का उपयोग करने की आवश्यकता है। मैंने एवरर अपडेट किया है। –

+0

कस्टम फ़ॉन्ट्स के साथ काम भी महान @ दीपेन पंचसर –

31

आप storyboard में लाइन स्पेसिंग को नियंत्रित कर सकते हैं।

enter image description here

Same question.

+2

मैंने वास्तव में यह कोशिश की। लेकिन यह काम नहीं कर रहा है। यह कस्टम फोंट के लिए भी उपयोगी नहीं है। – Sneha

+0

यदि आप कस्टम फोंट में गलत संरेखण का सामना कर रहे हैं, तो 'आरोही' संपत्ति को अपडेट करने का प्रयास करें [यहां बताया गया है] (http://stackoverflow.com/a/8314285/988169)। – pkc456

+1

इसकी गलत संरेखण समस्या नहीं है। मैं आपके कस्टम फ़ॉन्ट का चयन उस समाधान के साथ नहीं कर सकता जिसे आपने कहा था @ pkc456 – Sneha

21

इंटरफ़ेस बिल्डर से:

enter image description here

प्रोग्राम:

स्विफ्ट 4

लेबल एक्सटेंशन का उपयोग करना

extension UILabel { 

    func setLineSpacing(lineSpacing: CGFloat = 0.0, lineHeightMultiple: CGFloat = 0.0) { 

     guard let labelText = self.text else { return } 

     let paragraphStyle = NSMutableParagraphStyle() 
     paragraphStyle.lineSpacing = lineSpacing 
     paragraphStyle.lineHeightMultiple = lineHeightMultiple 

     let attributedString:NSMutableAttributedString 
     if let labelattributedText = self.attributedText { 
      attributedString = NSMutableAttributedString(attributedString: labelattributedText) 
     } else { 
      attributedString = NSMutableAttributedString(string: labelText) 
     } 

     // Line spacing attribute 
     attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length)) 

     self.attributedText = attributedString 
    } 
} 

अब विस्तार फ़ंक्शन को कॉल

let label = UILabel() 
let stringValue = "Set\nUILabel\nline\nspacing" 

// Pass value for any one argument - lineSpacing or lineHeightMultiple 
label.setLineSpacing(lineSpacing: 2.0) . // try values 1.0 to 5.0 

// or try lineHeightMultiple 
//label.setLineSpacing(lineHeightMultiple = 2.0) // try values 0.5 to 2.0 

या लेबल उदाहरण का उपयोग करते हुए (बस कॉपी & इस कोड को निष्पादित परिणाम देखने के लिए)

let label = UILabel() 
let stringValue = "Set\nUILabel\nline\nspacing" 
let attrString = NSMutableAttributedString(string: stringValue) 
var style = NSMutableParagraphStyle() 
style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48 
style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40 

// Line spacing attribute 
attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value: style, range: NSRange(location: 0, length: stringValue.characters.count)) 

// Character spacing attribute 
attrString.addAttribute(NSAttributedStringKey.kern, value: 2, range: NSMakeRange(0, attrString.length)) 

label.attributedText = attrString 

स्वाई फुट 3

let label = UILabel() 
let stringValue = "Set\nUILabel\nline\nspacing" 
let attrString = NSMutableAttributedString(string: stringValue) 
var style = NSMutableParagraphStyle() 
style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48 
style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40 
attrString.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSRange(location: 0, length: stringValue.characters.count)) 
label.attributedText = attrString 
+0

"NSAttributedStringKey.paragraphStyle" त्रुटि थी, मैं "NSParagraphStyleAttributeName" के बजाय इस्तेमाल किया। – Alfi

+0

@Alfi - यह स्विफ्ट भाषा संस्करण का अंतर है। आपकी परियोजना की तेज लांग। संस्करण तेजी से 3.x हो सकता है और यहां दोनों संस्करणों के उत्तर हैं। स्विफ्ट 3 कोड के साथ प्रयास करें। – Krunal