खोज…
परिचय
UILabel वर्ग केवल-पढ़ने के लिए पाठ दृश्य लागू करता है। आप इस वर्ग का उपयोग स्थिर पाठ की एक या कई पंक्तियों को खींचने के लिए कर सकते हैं, जैसे कि आप अपने उपयोगकर्ता इंटरफ़ेस के अन्य भागों की पहचान करने के लिए उपयोग कर सकते हैं। बेस UILabel वर्ग लेबल टेक्स्ट की सरल और जटिल शैली दोनों के लिए समर्थन प्रदान करता है। आप उपस्थिति के पहलुओं पर भी नियंत्रण कर सकते हैं, जैसे कि लेबल छाया का उपयोग करता है या हाइलाइट के साथ खींचता है। यदि आवश्यक हो, तो आप उप-पाठ द्वारा अपने पाठ की उपस्थिति को और अधिक अनुकूलित कर सकते हैं।
वाक्य - विन्यास
- UILabel.numberOfLines: Int // उन लाइनों की अधिकतम संख्या प्राप्त करें या सेट करें जिनके लेबल हो सकते हैं। 0 असीमित है
- UILabel.text: स्ट्रिंग? // उस लेबल को प्रदर्शित करता है जिसे प्राप्त या सेट किया जाता है
- UILabel.textColor: UIColor! // लेबल पर टेक्स्ट का रंग प्राप्त करें या सेट करें
- UILabel.tintColor: UIColor! // लेबल का टिंट रंग प्राप्त करें या सेट करें
- UILabel.attributedText: NSAttributedString? // लेबल के जिम्मेदार पाठ को प्राप्त करें या सेट करें
- UILabel.font: UIFont! // लेबल पर टेक्स्ट का फ़ॉन्ट प्राप्त करें या सेट करें
- UILabel.textAlignment: NSTextAlignment // पाठ के संरेखण को प्राप्त करें या सेट करें
टिप्पणियों
UILabels ऐसे विचार हैं जिनका उपयोग पाठ की एक या कई पंक्तियों को प्रदर्शित करने के लिए किया जा सकता है। इसमें टेक्स्ट को स्टाइल करने के कई तरीके हैं, जैसे कि शैडो, टेक्स्ट कलर और फोंट।
UILabels Attributed Strings को भी प्रदर्शित कर सकता है, जो कि टेक्स्ट के कुछ हिस्सों में स्टाइल लागू करने के लिए टेक्स्ट + इनलाइन मार्कअप है।
यूआईलेबेल UIAppearance प्रोटोकॉल के अनुरूप नहीं है, इसलिए आप UIAppearance प्रॉक्सी मेथड का उपयोग UILabels की उपस्थिति को अनुकूलित करने के लिए नहीं कर सकते। इस चर्चा को और देखें।
Apple डेवलपर संदर्भ यहाँ
मौजूदा लेबल में पाठ बदलना
एक मौजूदा के टेक्स्ट को बदलने UILabel
पहुँचने और संशोधित करके किया जा सकता है text
की संपत्ति UILabel
। यह सीधे String
शाब्दिक या अप्रत्यक्ष रूप से चर का उपयोग करके किया जा सकता है।
String
शाब्दिक के साथ पाठ सेट करना
तीव्र
label.text = "the new text"
उद्देश्य सी
// Dot Notation
label.text = @"the new text";
// Message Pattern
[label setText:@"the new text"];
एक चर के साथ पाठ सेट करना
तीव्र
let stringVar = "basic String var"
label.text = stringVar
उद्देश्य सी
NSString * stringVar = @"basic String var";
// Dot Notation
label.text = stringVar;
// Message Pattern
[label setText: stringVar];
लिखावट का रंग
लेबल के संपूर्ण पाठ पर पाठ रंग लागू करने के लिए आप लेबल के textColor
प्रॉपर्टी का उपयोग कर सकते हैं।
तीव्र
label.textColor = UIColor.redColor()
label.textColor = UIColor(red: 64.0/255.0, green: 88.0/255.0, blue: 41.0/225.0, alpha: 1)
स्विफ्ट 3
label.textColor = UIColor.red
label.textColor = UIColor(red: 64.0/255.0, green: 88.0/255.0, blue: 41.0/225.0, alpha: 1)
उद्देश्य सी
label.textColor = [UIColor redColor];
label.textColor = [UIColor colorWithRed:64.0f/255.0f green:88.0f/255.0f blue:41.0f/255.0f alpha:1.0f];
पाठ के एक हिस्से में पाठ का रंग लागू करना
आप NSAttributedString
का उपयोग करके पाठ के भागों के पाठ रंग (या अन्य विशेषताओं) को भी भिन्न कर सकते हैं:
उद्देश्य सी
attributedString = [[NSMutableAttributedString alloc] initWithString:@"The grass is green; the sky is blue."];
[attributedString addAttribute: NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(13, 5)];
[attributedString addAttribute: NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(31, 4)];
label.attributedText = attributesString;
तीव्र
let attributedString = NSMutableAttributedString(string: "The grass is green; the sky is blue.")
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.green(), range: NSRange(location: 13, length: 5))
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue(), range: NSRange(location: 31, length: 4))
label.attributedText = attributedString
पाठ्य संरेखण
तीव्र
label.textAlignment = NSTextAlignment.left
//or the shorter
label.textAlignment = .left
में कोई भी मान NSTextAlignment
enum मान्य है: .left
, .center
, .right
, .justified
, .natural
उद्देश्य सी
label.textAlignment = NSTextAlignmentLeft;
NSTextAlignment
enum में कोई भी मान मान्य है: NSTextAlignmentLeft
, NSTextAlignmentCenter
, NSTextAlignmentRight
, NSTextAlignmentJustified
, NSTextAlignmentNatural
UILabel
में वर्टिकल अलाइनमेंट बॉक्स से बाहर सपोर्टेड नहीं है: UILabel में टॉप पर टेक्स्ट को वर्टिकल अलाइन करें
एक UILabel बनाएँ
एक फ्रेम के साथ
जब आप अपने लेबल के लिए निर्धारित सटीक आयाम जानते हैं, तो आप CGRect
फ्रेम के साथ एक UILabel
को इनिशियलाइज़ कर सकते हैं।
तीव्र
let frame = CGRect(x: 0, y: 0, width: 200, height: 21) let label = UILabel(frame: frame) view.addSubview(label)
उद्देश्य सी
CGRect frame = CGRectMake(0, 0, 200, 21); UILabel *label = [[UILabel alloc] initWithFrame:frame]; [view addSubview:label];
ऑटो लेआउट के साथ
जब आप iOS को रनटाइम पर इसके फ्रेम की गणना करना चाहते हैं, तो आप एक UILabel
पर अवरोध जोड़ सकते हैं।
तीव्र
let label = UILabel() label.backgroundColor = .red label.translatesAutoresizingMaskIntoConstraints = false view.addSubview(label) NSLayoutConstraint.activate([ //stick the top of the label to the top of its superview: label.topAnchor.constraint(equalTo: view.topAnchor) //stick the left of the label to the left of its superview //if the alphabet is left-to-right, or to the right of its //superview if the alphabet is right-to-left: label.leadingAnchor.constraint(equalTo: view.leadingAnchor) //stick the label's bottom to the bottom of its superview: label.bottomAnchor.constraint(equalTo: view.bottomAnchor) //the label's width should be equal to 100 points: label.widthAnchor.constraint(equalToConstant: 100) ])
उद्देश्य सी
UILabel *label = [[UILabel alloc] init];
उद्देश्य-सी + दृश्य प्रारूप भाषा (VFL) के साथ
UILabel *label = [UILabel new];
label.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview label];
// add horizontal constraints with 5 left and right padding from the leading and trailing
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-5-[labelName]-5-|"
options:0
metrics:nil
views:@{@"labelName":label}]];
// vertical constraints that will use the height of the superView with no padding on top and bottom
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[labelName]|"
options:0
metrics:nil
views:@{@"labelName":label}]]
VFL प्रलेखन यहाँ पाया जा सकता है
लेबल बनाए जाने के बाद, ऑटो लेआउट के माध्यम से आयाम सेट करना सुनिश्चित करें। यदि यह अनुचित तरीके से किया जाता है तो Xcode त्रुटियां प्रदर्शित करेगा।
इंटरफ़ेस बिल्डर के साथ
आप अपने Storyboard
या .xib
फ़ाइल में एक UILabel
जोड़ने के लिए इंटरफ़ेस बिल्डर का उपयोग ऑब्जेक्ट लाइब्रेरी पैनल से एक Label
खींचकर और इसे कैनवास में एक दृश्य में छोड़ कर करते हैं:
UILabel
प्रोग्राम के लिए एक फ्रेम (स्थिति और आकार) को निर्दिष्ट करने के बजाय, Storyboard
या ए। .xib
आपको नियंत्रण में बाधाओं को जोड़ने के लिए ऑटो लेआउट का उपयोग करने देता है।
storyboard
या xib
से बने इस लेबल को एक्सेस करने के लिए, इस लेबल का IBOutlet बनाएं।
इंटरफ़ेस बिल्डर और व्यू कंट्रोलर के बीच लिंकिंग
एक बार जब आप एक जोड़ लिया है UILabel
अपने को Storyboard
या .xib
फ़ाइल आप दबाकर अपने कोड से लिंक कर सकते Control ⌃
और उसके बाद के बीच माउस खींचकर UILabel
अपने को ViewController
, या आप कोड है, जबकि इसके लिए राइट क्लिक पर खींचें सकता है एक ही प्रभाव है।
प्रॉपर्टीज़ डायलॉग में, आप UILabel
का नाम सेट कर सकते हैं, और इसे strong
या weak
रूप में सेट कर सकते weak
। strong
और weak
बारे में अधिक जानकारी के लिए, यह देखें,
दूसरा तरीका यह है कि आउटलेट को निम्न प्रकार से प्रोग्राम बनाया जाए:
तीव्र
@IBOutlet weak var nameLabel : UILabel!
उद्देश्य सी
@property (nonatomic, weak) IBOutlet UILabel *nameLabel;
फ़ॉन्ट सेट करें
तीव्र
let label = UILabel()
उद्देश्य सी
UILabel *label = [[UILabel alloc] init];
or
UILabel *label = [UILabel new]; // convenience method for calling alloc-init
डिफ़ॉल्ट फ़ॉन्ट का आकार बदलें
तीव्र
label.font = UIFont.systemFontOfSize(17)
स्विफ्ट 3
label.font = UIFont.systemFont(ofSize: 17)
उद्देश्य सी
label.font = [UIFont systemFontOfSize:17];
एक विशिष्ट फ़ॉन्ट वजन का उपयोग करें
तीव्र
label.font = UIFont.systemFontOfSize(17, weight: UIFontWeightBold)
Swift3
label.font = UIFont.systemFont(ofSize: 17, weight: UIFontWeightBold)
उद्देश्य सी
label.font = [UIFont systemFontOfSize:17 weight:UIFontWeightBold];
तीव्र
label.font = UIFont.boldSystemFontOfSize(17)
Swift3
label.font = UIFont.boldSystemFont(ofSize: 17)
उद्देश्य सी
label.font = [UIFont boldSystemFontOfSize:17];
डायनामिक टाइप टेक्स्ट स्टाइल का उपयोग करें।
फ़ॉन्ट और बिंदु का आकार उपयोगकर्ता के पसंदीदा पढ़ने के आकार पर आधारित होगा।
तीव्र
label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
स्विफ्ट 3
label.font = UIFont.preferredFont(forTextStyle: .body)
उद्देश्य सी
label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
पूरी तरह से एक अलग फ़ॉन्ट का उपयोग करें
तीव्र
label.font = UIFont(name: "Avenir", size: 15)
उद्देश्य सी
label.font = [UIFont fontWithName:@"Avenir" size:15];
फ़ॉन्ट आकार को ओवरराइड करें
फ़ॉन्ट परिवार को जाने बिना फ़ॉन्ट आकार सेट करने का एक तरीका है, जो कि UILabel
की फ़ॉन्ट संपत्ति का उपयोग करना है।
तीव्र
label.font = label.font.fontWithSize(15)
स्विफ्ट 3
label.font = label.font.withSize(15)
उद्देश्य सी
label.font = [label.font fontWithSize:15];
कस्टम फ़ॉन्ट स्विफ्ट का उपयोग करें
लाइनों की संख्या
जब आप एक लेबल बनाते हैं और उसके पाठ को एक एकल पंक्ति से अधिक होने के लिए सेट करते हैं जिसे वह प्रदर्शित कर सकता है, तो इसे छोटा कर दिया जाएगा और आपको केवल तीन डॉट्स (...) के साथ पाठ की एक पंक्ति समाप्त होती दिखाई देगी। ऐसा इसलिए है क्योंकि numberOfLines
नामक एक संपत्ति 1 पर सेट है, और इसलिए केवल एक लाइन प्रदर्शित की जाएगी। यह UILabel
को संभालने में एक आम गलती है, और कई लोग इसे बग के रूप में सोचते हैं, या वे एक से अधिक लेबल का उपयोग पाठ की एक पंक्ति से अधिक दिखाने के लिए कर सकते हैं, लेकिन सिर्फ इस संपत्ति को संपादित करके, हम एक UILabel
को बता सकते हैं लाइनों की निर्दिष्ट संख्या तक स्वीकार करें। उदाहरण के लिए, यदि यह संपत्ति 5 पर सेट है, तो लेबल 1, 2, 3, 4 या 5 लाइनों को दिखा सकता है।
मान को प्रोग्रामेटिक रूप से सेट करना
इस संपत्ति को सेट करने के लिए, बस इसे एक नया पूर्णांक असाइन करें:
तीव्र
label.numberOfLines = 2
उद्देश्य सी
label.numberOfLines = 2;
ध्यान दें
इस संपत्ति को 0. पर सेट करना संभव है। हालांकि, इसका मतलब यह नहीं है कि यह किसी भी लाइन को स्वीकार नहीं करेगा, इसके बजाय इसका मतलब है कि लेबल में आवश्यकतानुसार कई लाइनें हो सकती हैं (उर्फ "इन्फिनिटी"):
तीव्र
label.numberOfLines = 0
उद्देश्य सी
label.numberOfLines = 0;
ध्यान दें
यदि लेबल में ऊँचाई की कमी है, तो बाधा का सम्मान किया जाएगा। इस स्थिति में,
label.numberOfLines = 0
अपेक्षित रूप से काम नहीं कर सकता है।
ध्यान दें
अधिक जटिल बहु-पंक्ति पाठ के लिए, UITextView एक बेहतर फिट हो सकता है। *
इंटरफ़ेस बिल्डर में मान सेट करना
क्रमादेशित रूप से numberOfLines
निर्धारित करने के बजाय, आप एक Storyboard
या एक .xib
उपयोग कर सकते हैं और numberOfLines
गुण सेट कर सकते हैं। इस तरह, हम उपरोक्त कोड के समान परिणाम प्राप्त करते हैं।
नीचे की तरह:
आकार के लायक
मान लीजिए कि आपके storyboard
पर एक UILabel
और आपने इसके लिए ViewController.swift
/ ViewController.m
में एक IBOutlet
बनाया है और इसका नाम labelOne
रखा है।
परिवर्तन आसानी से दिखाई बनाने के लिए, बदलने backgroundColor
और textColor
में labelOne की viewDidLoad
विधि:
जब आप अपने भीतर संग्रहीत सामग्री के आधार पर एक लेबल का आकार बदलना चाहते हैं, तो फंक्शन sizeToFit
का उपयोग किया जाता है।
तीव्र
labelOne.backgroundColor = UIColor.blueColor()
labelOne.textColor = UIColor.whiteColor()
labelOne.text = "Hello, World!"
labelOne.sizeToFit()
स्विफ्ट 3
labelOne.backgroundColor = UIColor.blue
labelOne.textColor = UIColor.white
labelOne.text = "Hello, World!"
labelOne.sizeToFit()
उद्देश्य सी
labelOne.backgroundColor = [UIColor blueColor];
labelOne.textColor = [UIColor whiteColor];
labelOne.text = @"Hello, World!";
[labelOne sizeToFit];
उपरोक्त कोड के लिए आउटपुट है:
जैसा कि आप देख सकते हैं, कोई बदलाव नहीं है क्योंकि टेक्स्ट लेबलऑन में पूरी तरह से फिट है। sizeToFit केवल लेबल के फ्रेम को बदलता है।
आइए टेक्स्ट को थोड़ा लंबा करें:
labelOne.text = "Hello, World! I’m glad to be alive!"
अब, LabelOne इस तरह दिखता है:
यहां तक कि sizeToFit
को कॉल करने से कुछ भी नहीं बदलता है। ऐसा इसलिए है क्योंकि डिफ़ॉल्ट रूप से, UILabel द्वारा दिखाए गए नंबरऑफलाइन 1 पर सेट है। आइए इसे स्टोरीबोर्ड पर शून्य में बदलें।
इस बार, जब हम ऐप चलाते हैं, तो लेबल ठीक से दिखाई देता है:
numberOfLines
संपत्ति ViewController
फाइल में भी बदली जा सकती है:
// Objective-C
labelOne.numberOfLines = 0;
// Swift
labelOne.numberOfLines = 0
पीछे का रंग
तीव्र
label.backgroundColor = UIColor.redColor()
label.backgroundColor = .redColor()
स्विफ्ट 3
label.backgroundColor = UIColor.red
उद्देश्य सी
label.backgroundColor = [UIColor redColor];
पाठ में छाया जोड़ें
तीव्र
label1.layer.shadowOffset = CGSize(width: 3, height: 3)
label1.layer.shadowOpacity = 0.7
label1.layer.shadowRadius = 2
स्विफ्ट 3
label1.layer.shadowOffset = CGSize(width: 3, height: 3)
label1.layer.shadowOpacity = 0.7
label1.layer.shadowRadius = 2
उद्देश्य सी
label1.layer.shadowOffset = CGSizeMake(3, 3);
label1.layer.shadowOpacity = 0.7;
label1.layer.shadowRadius = 2;
बाधाओं का उपयोग कर चर ऊंचाई
आप ऑटो लेआउट का उपयोग करके एक गतिशील ऊंचाई के साथ एक UILabel
बना सकते हैं।
आपको numberOfLines
को शून्य (0) पर सेट करने की आवश्यकता है, और .Height
विशेषता पर प्रकार .GreaterThanOrEqual
तीव्र
label.numberOfLines = 0
let heightConstraint = NSLayoutConstraint(
item: label,
attribute: .Height,
relatedBy: .GreaterThanOrEqual,
toItem: nil,
attribute: .NotAnAttribute,
multiplier: 0,
constant: 20
)
label.addConstraint(heightConstraint)
तीव्र
label.numberOfLines = 0
label.translatesAutoresizingMaskIntoConstraints = false
label.heightAnchor.constraintGreaterThanOrEqualToConstant(20).active = true
LineBreakMode
कोड का उपयोग करना
UILabel.lineBreakMode: NSLineBreakMode
तीव्र
label.lineBreakMode = .ByTruncatingTail
-
.ByWordWrapping
-
.ByCharWrapping
-
.ByClipping
-
.ByTruncatingHead
-
.ByTruncatingTail
-
.ByTruncatingMiddle
स्विफ्ट 3
label.lineBreakMode = .byTruncatingTail
-
.byWordWrapping
-
.byCharWrapping
-
.byClipping
-
.byTruncatingHead
-
.byTruncatingTail
-
.byTruncatingMiddle
उद्देश्य सी
[label setLineBreakMode:NSLineBreakByTruncatingTail];
-
NSLineBreakByWordWrapping
-
NSLineBreakByCharWrapping
-
NSLineBreakByClipping
-
NSLineBreakByTruncatingHead
-
NSLineBreakByTruncatingTail
-
NSLineBreakByTruncatingMiddle
स्टोरीबोर्ड का उपयोग करना
यह भी एक UILabel के गुण निरीक्षक में सेट किया जा सकता है:
स्थिरांक
- वर्ड रैपिंग - रैपिंग शब्द की सीमाओं पर होता है, जब तक कि शब्द एक ही लाइन पर फिट नहीं होता है
- चार रैपिंग - रैपिंग पहले पात्र से पहले होती है जो फिट नहीं होती है
- क्लिपिंग - लाइनों को केवल टेक्स्ट कंटेनर के किनारे से नहीं निकाला जाता है
- ट्रंकिंग हेड - लाइन को प्रदर्शित किया जाता है ताकि अंत कंटेनर में फिट हो जाए और लाइन की शुरुआत में लापता पाठ एक दीर्घवृत्त ग्लिफ़ द्वारा इंगित किया गया हो
- ट्रंकिंग टेल - लाइन को प्रदर्शित किया जाता है ताकि शुरुआत कंटेनर में फिट हो और लाइन के अंत में लापता पाठ एक दीर्घवृत्त ग्लिफ़ द्वारा इंगित किया गया हो
- ट्रंकिंग मध्य - रेखा को प्रदर्शित किया जाता है ताकि कंटेनर में शुरुआत और अंत फिट हो और बीच में लापता पाठ एक दीर्घवृत्त ग्लिफ़ द्वारा इंगित किया गया हो
सामग्री सीमा की गणना करें (यानी डायनेमिक सेल हाइट के लिए)
एक लेबल जिस फ्रेम को लेना चाहते हैं, उसकी गणना के लिए एक सामान्य उपयोग मामला उचित रूप से टेबल व्यू कोशिकाओं को आकार देने के लिए है। ऐसा करने का एक सुझाया गया तरीका इस्तेमाल कर रहा है NSString
विधि boundingRectWithSize:options:attributes:context:
।
options
स्ट्रिंग ड्राइंग options
लेता है:
-
NSStringDrawingUsesLineFragmentOrigin
का उपयोग कई लाइनों वाले लेबल के लिए किया जाना चाहिए -
NSStringDrawingTruncatesLastVisibleLine
का उपयोग करके जोड़ा जाना चाहिए|
ऑपरेटर यदि अधिकतम पंक्तियाँ हैं
attributes
उन attributes
का एक NSDictionary
है जो प्रभाव के लिए तार (पूरी सूची: Apple डॉक्स ) को जिम्मेदार ठहराती है, लेकिन ऊंचाई को प्रभावित करने वाले कारकों में शामिल हैं:
NSFontAttributeName : बहुत महत्वपूर्ण, आकार और फ़ॉन्ट परिवार लेबल के प्रदर्शित आकार का एक महत्वपूर्ण हिस्सा है।
NSParagraphStyleAttributeName : पाठ को कैसे प्रदर्शित किया जाता है इसे अनुकूलित करने के लिए। इसमें लाइन स्पेसिंग, टेक्स्ट अलाइनमेंट, ट्रंकेशन स्टाइल और कुछ अन्य विकल्प शामिल हैं। यदि आपने इनमें से किसी भी मूल्य को स्पष्ट रूप से नहीं बदला है, तो आपको इस बारे में अधिक चिंता करने की आवश्यकता नहीं है, लेकिन यदि आप आईबी पर कुछ मूल्यों को बढ़ाते हैं, तो यह महत्वपूर्ण हो सकता है।
context
nil
होना चाहिए क्योंकि प्राथमिक NSStringDrawingContext
उपयोग का मामला फ़ॉन्ट को एक निर्दिष्ट आयत के आकार बदलने के लिए अनुमति देने के लिए है, जो कि अगर हम एक गतिशील ऊंचाई की गणना कर रहे हैं तो ऐसा नहीं होना चाहिए।
उद्देश्य सी
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *labelContent = cell.theLabel.text;
// you may choose to get the content directly from the data source if you have done minimal customizations to the font or are comfortable with hardcoding a few values
// NSString *labelContent = [self.dataSource objectAtIndexPath:indexPath];
// value may be hardcoded if retrieved from data source
NSFont *labelFont = [cell.theLabel font];
// The NSParagraphStyle, even if you did not code any changes these values may have been altered in IB
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentCenter;
NSDictionary *attributes = @{NSFontAttributeName: labelFont,
NSParagraphStyleAttributeName: paragraphStyle};
// The width is also important to the height
CGFloat labelWidth = CGRectGetWidth(cell.theLabel.frame);
// If you have been hardcoding up to this point you will be able to get this value by subtracting the padding on left and right from tableView.bounds.size.width
// CGFloat labelWidth = CGRectGetWidth(tableView.frame) - 20.0f - 20.0f;
CGRect bodyBounds = [labelContent boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
return CGRectGetHeight(bodyBounds) + heightOfObjectsOnTopOfLabel + heightOfObjectBelowLabel;
}
तैसा ३
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
var cell = tableView.cellForRow(atIndexPath: indexPath)!
var labelContent = cell.theLabel.text
var labelFont = cell.theLabel.font
var paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .byWordWrapping
paragraphStyle.alignment = .center
var attributes = [NSFontAttributeName: labelFont, NSParagraphStyleAttributeName: paragraphStyle]
var labelWidth: CGFloat = cell.theLabel.frame.width
var bodyBounds = labelContent.boundingRect(withSize: CGSize(width: width, height: CGFLOAT_MAX), options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
return bodyBounds.height + heightOfObjectsOnTopOfLabel + heightOfObjectBelowLabel
}
इसके विपरीत, यदि आपके पास एक सेट अधिकतम पंक्तियाँ हैं, तो आपको यह सुनिश्चित करने के लिए पहली पंक्ति की ऊँचाई की गणना करने की आवश्यकता होगी कि हमें स्वीकृत आकार से अधिक मूल्य नहीं मिलता है:
// We calculate the height of a line by omitting the NSStringDrawingUsesLineFragmentOrigin option, which will assume an infinitely wide label
CGRect singleLineRect = [labelContent boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)
options:NSStringDrawingTruncatesLastVisibleLine
context:nil];
CGFloat lineHeight = CGRectGetHeight(singleLineRect);
CGFloat maxHeight = lineHeight * cell.theLabel.numberOfLines;
// Now you can call the method appropriately
CGRect bodyBounds = [labelContent boundingRectWithSize:CGSizeMake(width, maxHeight) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingTruncatesLastVisibleLine) attributes:attributes context:nil];
return CGRectGetHeight(bodyBounds) + heightOfObjectsOnTopOfLabel + heightOfObjectBelowLabel;
क्लिक करने योग्य लेबल
नोट: ज्यादातर मामलों में, यह बेहतर उपयोग करने के लिए एक है
UIButton
एक बनाने के बजायUILabel
आप टैप कर सकते हैं। केवल इस उदाहरण का उपयोग करें, यदि आप सुनिश्चित हैं, कि आप किसी कारण सेUIButton
का उपयोग नहीं करना चाहते हैं।
- लेबल बनाएं
- उपयोगकर्ता सहभागिता सक्षम करें
-
UITapGestureRecognizer
जोड़ें
क्लिक करने योग्य UILabel
बनाने की कुंजी उपयोगकर्ता सहभागिता को सक्षम करना है।
तीव्र
let label = UILabel()
label.userInteractionEnabled = true
let gesture = UITapGestureRecognizer(target: self, action: #selector(labelClicked(_:)))
label.addGestureRecognizer(gesture)
उद्देश्य सी
UILabel *label = [[UILabel alloc] init];
[label setUserInteractionEnabled:YES];
UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelClicked:)];
[label addGestureRecognizer:gesture];
स्टोरीबोर्ड के गुण निरीक्षक में "userInteractionEnabled" सेट करना
कोड का उपयोग करने के बजाय, आप स्टोरीबोर्ड के अंदर UILabel का चयन कर सकते हैं और विकल्प की जांच कर सकते हैं:
अज्ञात पाठ लंबाई से डायनामिक लेबल फ़्रेम
कभी-कभी हमें डायनामिक कंटेंट के आधार पर एक यूआईबेल का आकार बदलना पड़ता है जहां टेक्स्ट की लंबाई अज्ञात होती है। इस उदाहरण में, यूबेल की चौड़ाई 280 बिंदुओं पर तय की गई है और ऊंचाई अनंत है, 9999 बताते हैं। पाठ शैली और अधिकतम लाइबलाइज़ के संबंध में फ्रेम का अनुमान लगाना।
उद्देश्य सी
UILabel * label = [[UILabel alloc] init];
NSString *message = @"Some dynamic text for label";
//set the text and style if any.
label.text = message;
label.numberOfLines = 0;
CGSize maximumLabelSize = CGSizeMake(280, 9999); //280:max width of label and 9999-max height of label.
// use font information from the UILabel to calculate the size
CGSize expectedLabelSize = [label sizeThatFits:maximumLabelSize];
//Deprecated in iOS 7.0
//CGSize expectedLabelSize = [message sizeWithFont:label.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping];
// create a frame that is filled with the UILabel frame data
CGRect newFrame = label.frame;
// resizing the frame to calculated size
newFrame.size.height = expectedLabelSize.height;
// put calculated frame into UILabel frame
label.frame = newFrame;
तीव्र
var message: String = "Some dynamic text for label"
//set the text and style if any.
label.text = message
label.numberOfLines = 0
var maximumLabelSize: CGSize = CGSize(width: 280, height: 9999)
var expectedLabelSize: CGSize = label.sizeThatFits(maximumLabelSize)
// create a frame that is filled with the UILabel frame data
var newFrame: CGRect = label.frame
// resizing the frame to calculated size
newFrame.size.height = expectedLabelSize.height
// put calculated frame into UILabel frame
label.frame = newFrame
लेबल संलग्न पाठ
01. अंडरलाइन टेक्स्ट: - सिंगल / डबल लाइन, स्ट्राइक थ्रू: - सिंगल / डबल लाइन
चरण 1
लेबल का चयन करें और लेबल प्रकार को बदलकर Attributed करें
चरण 2
लेबल टेक्स्ट पर क्लिक करें और राइट क्लिक करें
चरण 3
फिर फ़ॉन्ट -> फ़ॉन्ट दिखाएं पर क्लिक करें
चरण 4
फिर फ़ॉन्ट दृश्य दिखाई देगा और टेक्स्ट अंडरलाइन करने के लिए अंडरलाइन बटन पर क्लिक करें या टेक्स्ट स्ट्राइकथ्रू बनाने के लिए स्ट्राइकथ्रू बटन पर क्लिक करें। और सिंगल लाइन या डबल लाइन चुनें।
अंत में क्लिक करें दर्ज करें और लेबल को आपके चयन के अनुसार रेखांकन या स्ट्राइकथ्रू दिखाया जाएगा।
02. टेक्स्ट shaddow / बैकग्राउंड ब्लर इफेक्ट्स जोड़ें
ऊपर वर्णित रूप में फ़ॉन्ट दृश्य प्राप्त करें और प्रभाव बटन पर क्लिक करें।
यदि आप पूर्वावलोकन नहीं देखते हैं, तो सेटिंग में शो इमेज पर क्लिक करें
अंत में अपनी प्राथमिकताओं के अनुसार shaddow और ऑफसेट बदलें।
पाठ का औचित्य सिद्ध करें
तीव्र
let sampleText = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
// Create label
let label = UILabel(frame: CGRectMake(0, 0, view.frame.size.width, 400))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
// Justify text through paragraph style
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = NSTextAlignment.Justified
let attributes = [NSParagraphStyleAttributeName: paragraphStyle, NSBaselineOffsetAttributeName: NSNumber(float: 0)]
let attributedString = NSAttributedString(string: sampleText, attributes: attributes)
label.attributedText = attributedString
view.addSubview(label)
उद्देश्य सी
NSString *sampleText = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
// Create label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 400)];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
// Justify text through paragraph style
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.alignment = NSTextAlignmentJustified;
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:sampleText attributes:@{
NSParagraphStyleAttributeName : paragraphStyle,
NSBaselineOffsetAttributeName : [NSNumber numberWithFloat:0]
}];
label.attributedText = attributedString;
[self.view addSubview:label];
पाठ को फिट करने के लिए ऑटो-आकार का लेबल
यह उदाहरण दिखाता है कि जब पाठ सामग्री में परिवर्तन होता है तो लेबल की चौड़ाई स्वचालित रूप से कैसे बदल सकती है।
बाएं और शीर्ष किनारों को पिन करें
बस लेबल के बाईं और ऊपरी तरफ पिन करने के लिए बाधाओं को जोड़ने के लिए ऑटो लेआउट का उपयोग करें।
उसके बाद यह स्वचालित रूप से आकार बदल जाएगा।
टिप्पणियाँ
यह उदाहरण इस स्टैक ओवरफ्लो उत्तर से आता है।
चौड़ाई और ऊंचाई के लिए बाधाओं को न जोड़ें। लेबल में उनकी पाठ्य सामग्री के आधार पर आंतरिक आकार होता है।
ऑटो लेआउट का उपयोग करते समय
sizeToFit
सेट करने की आवश्यकता नहीं है। उदाहरण परियोजना के लिए पूरा कोड यहाँ है:import UIKit class ViewController: UIViewController { @IBOutlet weak var myLabel: UILabel! @IBAction func changeTextButtonTapped(sender: UIButton) { myLabel.text = "my name is really long i want it to fit in this box" } }
- इस पद्धति का उपयोग क्षैतिज रूप से इस उदाहरण के रूप में कई लेबल को सही ढंग से करने के लिए किया जा सकता है।
- यदि आप अपना लेबल लाइन रैप करना चाहते हैं तो आईबी में लाइन्स की संख्या को 0 पर सेट करें और
myLabel.preferredMaxLayoutWidth = 150 // or whatever
कोड मेंmyLabel.preferredMaxLayoutWidth = 150 // or whatever
जोड़ें। (बटन को लेबल के नीचे भी पिन किया गया है ताकि लेबल की ऊँचाई बढ़ने पर वह नीचे आ जाए।)
अपने पाठ और फ़ॉन्ट के आधार पर उइबेल का आकार सख्ती से प्राप्त करें
NSString
तरीका प्रदान करता है boundingRectWithSize
जो एक के परिणामस्वरूप CGSize भविष्यवाणी करने के लिए इस्तेमाल किया जा सकता UILabel
एक बनाने की आवश्यकता के बिना अपने पाठ और फ़ॉन्ट के आधार पर UILabel
उद्देश्य सी
[[text boundingRectWithSize:maxSize options:(NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName: fontName} context:nil] size];
तीव्र
let nsText = text as NSString?
nsText?.boundingRectWithSize(maxSize, options: [.TruncatesLastVisibleLine, .UsesLineFragmentOrigin], attributes: [NSFontAttributeName: fontName], context: nil).size
तीव्र
लेबल बनाएँ और ऊँचाई बाधा आउटलेट। नीचे दिए गए कोड को जोड़ें जहां आप पाठ को लेबल पर असाइन करेंगे।
@IBOutlet var lblDescriptionHeightConstration: NSLayoutConstraint!
@IBOutlet weak var lblDescription: UILabel!
let maxWidth = UIScreen.mainScreen().bounds.size.width - 40
let sizeOfLabel = self.lblDesc.sizeThatFits(CGSize(width: maxWidth, height: CGFloat.max))
self.lblDescriptionHeightConstration.constant = sizeOfLabel.height
नोट: "40" स्क्रीन के बाईं और दाईं ओर का स्थान है।
हाइलाइटेड और हाईलाइटेड टेक्स्ट कलर
उद्देश्य सी
UILabel *label = [[UILabel alloc] init];
label.highlighted = YES;
label.highlightedTextColor = [UIColor redColor];
तीव्र
let label = UILabel()
label.highlighted = true
label.highlightedTextColor = UIColor.redColor()
स्विफ्ट 3
let label = UILabel()
label.isHighlighted = true
label.highlightedTextColor = UIColor.red