जवाबों:
संपादित करें: जाहिर NSAttributedString
है यह iOS 6 और बाद में करेगा। NSString
लेबल के पाठ को सेट करने के लिए उपयोग करने के बजाय NSAttributedString
, उस पर एक विशेषता सेट करें, फिर उसे .attributedText
लेबल पर सेट करें । आपको जो कोड चाहिए वह कुछ इस तरह होगा:
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"Sample text"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:24];
[attrString addAttribute:NSParagraphStyleAttributeName
value:style
range:NSMakeRange(0, strLength)];
uiLabel.attributedText = attrString;
NSAttributedString के पुराने attributedStringWithString ऐसा ही किया था, लेकिन अब है कि पदावनत किया जा रहा है।
ऐतिहासिक कारणों से, यहां मेरा मूल उत्तर है:
संक्षिप्त उत्तर: आप नहीं कर सकते। पाठ की पंक्तियों के बीच अंतर को बदलने के लिए, आपको UILabel
अपने स्वयं के उप-वर्ग और रोल करने होंगे drawTextInRect
, कई लेबल बनाने होंगे, या एक अलग फ़ॉन्ट का उपयोग करना होगा (शायद एक विशिष्ट पंक्ति ऊंचाई के लिए संपादित किया गया है, फिलिप्स का जवाब देखें)।
दीर्घ उत्तर: प्रिंट और ऑनलाइन दुनिया में, पाठ की पंक्तियों के बीच की जगह को "अग्रणी" ('शीर्षक' के साथ गाया जाता है, और दशकों पहले इस्तेमाल की गई प्रमुख धातु से आता है)। अग्रणी केवल पढ़ने की संपत्ति है UIFont
, जिसे 4.0 में पदावनत किया गया था और उसके द्वारा प्रतिस्थापित किया गया था lineHeight
। जहाँ तक मुझे पता है, कोई विशिष्ट मापदंड जैसे सेट के साथ फ़ॉन्ट बनाने का कोई तरीका नहीं है lineHeight
; आपको सिस्टम फोंट और आपके द्वारा जोड़ा गया कोई भी कस्टम फॉन्ट मिलता है, लेकिन एक बार इंस्टॉल होने के बाद उन्हें ट्विक नहीं किया जा सकता।
इसमें कोई रिक्ति पैरामीटर नहीं है UILabel
।
मैं विशेष UILabel
रूप से उसके व्यवहार से खुश नहीं हूँ , इसलिए मेरा सुझाव है कि आप अपना उपवर्ग लिखें या तृतीय-पक्ष पुस्तकालय का उपयोग करें। यह आपके फ़ॉन्ट विकल्प के व्यवहार को स्वतंत्र बना देगा और सबसे पुन: प्रयोज्य समाधान होगा।
काश में अधिक लचीलापन होता UILabel
, और मुझे गलत साबित होने में खुशी होती!
Ios 6 में शुरू होने से आप UILabel में एक जिम्मेदार स्ट्रिंग सेट कर सकते हैं:
NSString *labelText = @"some text";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:40];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
cell.label.attributedText = attributedString ;
AttributedString
उदाहरण के लेबल के पाठ संरेखण के लिए अक्षम का उपयोग कर, तो आप इसे पैरा शैली में जोड़ना होगा।
आप स्टोरीबोर्ड में लाइन रिक्ति को नियंत्रित कर सकते हैं:
इंटरफ़ेस बिल्डर से:
प्रोग्राम के रूप में:
स्विफ्ट 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 = "How to\ncontrol\nthe\nline spacing\nin UILabel"
// 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
मेरा समाधान फ़ॉन्ट फ़ाइल को स्वयं पैच करना और निश्चित रूप से इसकी लाइन ऊंचाई को ठीक करना था। http://mbauman.net/geek/2009/03/15/minor-truetype-font-editing-on-a-mac/
मुझे 'hhea' ब्लॉक (ब्लॉग उदाहरण में) के रूप में 'लाइनगैप', 'आरोही', 'अवरोही' को संशोधित करना था।
इस आदमी ने लाइन-हाइट पाने के लिए एक क्लास बनाई (MTTabel लाइब्रेरी के रूप में CoreText का उपयोग किए बिना): https://github.com/LemonCake/MSLabel
मुझे मिली सबसे अच्छी बात यह है: https://github.com/mattt/TTTAttributedLabel
यह एक यूबेल उप-वर्ग है इसलिए आप इसे बस में छोड़ सकते हैं, और फिर लाइन की ऊँचाई को बदल सकते हैं:
myLabel.lineHeightMultiple = 0.85;
myLabel.leading = 2;
प्रोग्राम को रिक्तिमान रूप से सेट करने के लिए यहां कुछ स्विफ्ट-कोड दिए गए हैं
let label = UILabel()
let attributedText = NSMutableAttributedString(string: "Your string")
let paragraphStyle = NSMutableParagraphStyle()
//SET THIS:
paragraphStyle.lineSpacing = 4
//OR SET THIS:
paragraphStyle.lineHeightMultiple = 4
//Or set both :)
let range = NSMakeRange(0, attributedText.length)
attributedText.addAttributes([NSParagraphStyleAttributeName : paragraphStyle], range: range)
label.attributedText = attributedText
यदि आप स्ट्रिंग को प्रोग्रामिक रूप से पास करते हैं, तो निश्चित रूप से, माइक का जवाब काम नहीं करता है। इस मामले में आपको एक जिम्मेदार स्ट्रिंग पास करने और इसे शैली बदलने की आवश्यकता है।
NSMutableAttributedString * attrString = [[NSMutableAttributedString alloc] initWithString:@"Your \nregular \nstring"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:4];
[attrString addAttribute:NSParagraphStyleAttributeName
value:style
range:NSMakeRange(0, attrString.length)];
_label.attributedText = attrString;