ios - UILabel के लिए लाइन ब्रेक कैसे जोड़ें?




iphone newline (13)

// संख्याऑफलाइन को शून्य पर सेट करना न भूलें

UILabel* locationTitle = [[UILabel alloc] initWithFrame:CGRectMake(5, 30, 230, 40)];
locationTitle.font = [UIFont systemFontOfSize:13.0];
locationTitle.numberOfLines = 0;
locationTitle.text = [NSString stringWithFormat:@"Eaton industries pvt. Ltd \nUK Apr 12"];
[cell addSubview:locationTitle];

चलो देखते हैं कि मेरे पास एक स्ट्रिंग दिख रही है:

NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";  

मैं इसे कैसे बना सकता हूं ताकि UILabel इस तरह का संदेश प्रदर्शित कर सके

AAAAA
BBBBB
CCCCC

मुझे नहीं लगता कि \n UILabel द्वारा पहचाना जाता है, तो क्या ऐसा कुछ भी है जिसे मैं एनएसएसटींग के अंदर रख सकता हूं ताकि UILabel जानता है कि उसे वहां एक लाइन ब्रेक बनाना है?


आपको UILabel पर numberOfLines संपत्ति सेट करनी होगी। डिफ़ॉल्ट 1 है , यदि आप इसे 0 पर सेट करते हैं तो यह सभी सीमाओं को हटा देगा।


एक्सकोड 6 पर, आप शब्द रैप का उपयोग करते समय \ n स्ट्रिंग के अंदर भी उपयोग कर सकते हैं। यह काम करेगा। तो उदाहरण के लिए:

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, screenRect.size.width, 50)];
label.textAlignment = NSTextAlignmentCenter;
label.text = @"This will be on the first line\nfollowed by a line under it.";
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;

किसी और के लिए जो आकार के साथ परेशानी हो सकती है sizeWithFont:constrainedToSize:lineBreakMode: या ios8 पर स्विच करने वाला कोई भी व्यक्ति (विधि ios7 के रूप में बहिष्कृत है), मैंने इसके बजाय आकार sizeToFit का उपयोग कर अपनी ऊंचाई समायोजित की।

UILabel *label;
label.numberOfLines = 0;
// Setup label with desired settings
...
[label sizeToFit];
label.frame = CGRectMake(label.frame.origin.x,     // Or use any desired origin
                         label.frame.origin.y, 
                         label.frame.size.width,   // Or use any desired width
                         label.frame.size.height);

बस label.numberOfLines = 0; का उपयोग कर label.numberOfLines = 0;


मुझे एक ही समस्या का सामना करना पड़ा है, और यहां है, मैंने समस्या को कैसे हल किया। उम्मीद है कि यह किसी के लिए सहायक होगा।

// स्विफ्ट 2

   lblMultiline.lineBreakMode = .ByWordWrapping // or use NSLineBreakMode.ByWordWrapping
   lblMultiline.numberOfLines = 0 

// उद्देश्य सी

  lblMultiline.lineBreakMode = NSLineBreakByWordWrapping;
  lblMultiline.numberOfLines = 0;

// सी # (Xamarin.iOS)

  lblMultiline.LineBreakMode = UILineBreakMode.WordWrap;
  lblMultiline.Lines = 0;  

यदि आप UILabel का उपयोग कर रहे हैं तो आपको याद रखना होगा कि डिफ़ॉल्ट सेटिंग 1 लाइन है, इसलिए इससे कोई फ़र्क नहीं पड़ता कि आप कितने ब्रेक जोड़ते हैं ( \n या \r ), आपको यह सुनिश्चित करना होगा कि यह एक से अधिक पंक्तियों पर सेट हो, इसलिए यह अधिक लाइनों को जोड़ने की अनुमति दी जा सकती है।

एक विकल्प UITextView का उपयोग करना है जो वास्तव में multilines के लिए है।

आप आसानी से UILabel के एक्सकोड विशेषता अनुभाग में इसे प्राप्त कर सकते हैं, स्क्रीनशॉट देखें:


यदि आप अपनी यूआईएलएबल गुणों को सादा से जिम्मेदार बनाते हैं ... यूआईएलएबल मल्टीलाइन टेक्स्ट रखेगा चाहे आपके यूआईएलएबल की ऊंचाई और चौड़ाई के साथ कितने पैराग्राफ हों, उस स्क्रीन क्षेत्र में फ़िट हो जाएं, जिसमें आप टेक्स्ट प्रदर्शित करना चाहते हैं।


विशेष रूप से ऑटोलायआउट का उपयोग करते समय लेबल फ्रेम आकार को बदलने में मुझे गलत लगता है। AppendFormat विधि का उपयोग करना अधिक उपयुक्त लगता है। मेरा उदाहरण यहां दिया गया है:

NSMutableString *list = [[NSMutableString alloc] init];
NSArray *textArray = @[@"AAAA", @"BBBB"];
for (NSString *string in textArray) {
    [list appendFormat:@"%@\n", string.mutableCopy];
}
self.label.text = list;
self.label.numberOfLines = 0;

स्विफ्ट 2.2 में,> आईओएस 8

मैंने स्टोरीबोर्ड पर लाइन्स = 0 सेट किया है, एट्रिब्यूट इंस्पेक्टर के तहत और लेबल में एक रेफरेंसिंग आउटलेट लिंक किया है। फिर इस तरह नियंत्रक में उपयोग करें:

 @IBOutlet weak var listLabel: UILabel!

 override func viewDidLoad() {
      ...
      listLabel.text = "Line 1\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nLine 8"
 }

\n उपयोग करें जैसा कि आप अपनी स्ट्रिंग में उपयोग कर रहे हैं।

किसी भी लाइन की अनुमति देने के लिए संख्याऑफलाइन 0 पर सेट करें।

label.numberOfLines = 0;

sizeWithFont: का उपयोग कर पाठ के आकार से मेल खाने के लिए लेबल फ्रेम अपडेट करें:। यदि आप ऐसा नहीं करते हैं तो आपका टेक्स्ट लंबवत केंद्रित होगा या कट जाएगा।

UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
                          constrainedToSize:label.frame.size
                              lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);

अद्यतन: बहिष्कृत के लिए प्रतिस्थापन

sizeWithFont:constrainedToSize:lineBreakMode:

संदर्भ, बहिष्कृत आकार के लिए प्रतिस्थापन WithFont: आईओएस 7 में?

CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];

label.frame = CGRectMake(
    label.frame.origin.x, label.frame.origin.y, 
    label.frame.size.width, labelSize.height);

Just use like this :)

NSString * strCheck = @"A\nB";

strCheck = [strCheck stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];  //This is to prevent for fetching string from plist or data structure

label.numberOfLines = 0;

label.lineBreakMode = NSLineBreakByWordWrapping;

label.text = strCheck;

textLabel.text = @"\nAAAAA\nBBBBB\nCCCCC";
textLabel.numberOfLines = 3; \\As you want - AAAAA\nBBBBB\nCCCCC
textLabel.lineBreakMode = UILineBreakModeWordWrap;
NSLog(@"The textLabel text is - %@",textLabel.text);




line-breaks