खोज…


परिचय

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 रूप में सेट कर सकते weakstrong और 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];

एक विशिष्ट फ़ॉन्ट वजन का उपयोग करें

iOS 8.2

तीव्र

label.font = UIFont.systemFontOfSize(17, weight: UIFontWeightBold)

Swift3

label.font = UIFont.systemFont(ofSize: 17, weight: UIFontWeightBold)

उद्देश्य सी

label.font = [UIFont systemFontOfSize:17 weight:UIFontWeightBold];
iOS 8.2

तीव्र

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

iOS 6

तीव्र

label.numberOfLines = 0

let heightConstraint = NSLayoutConstraint(
    item: label,
    attribute: .Height,
    relatedBy: .GreaterThanOrEqual,
    toItem: nil,
    attribute: .NotAnAttribute,
    multiplier: 0,
    constant: 20
)

label.addConstraint(heightConstraint)
आईओएस 9

तीव्र

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 का उपयोग नहीं करना चाहते हैं।

  1. लेबल बनाएं
  2. उपयोगकर्ता सहभागिता सक्षम करें
  3. 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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow