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




iphone newline (16)

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

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

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

AAAAA
BBBBB
CCCCC

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


इंटरफ़ेस बिल्डर में, आप जिस स्थिति को चाहते हैं उसे सम्मिलित करने के लिए Ctrl + Enter का उपयोग कर सकते हैं। इस तरह से निम्नलिखित स्थिति लागू कर सकते हैं

aaa
aaaaaaa


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

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];

मेरे मामले में भी \ n काम नहीं कर रहा था, मैंने लाइनों की संख्या 0 पर रखकर समस्या को ठीक किया और टेक्स्ट को प्रतिलिपि बना दिया और टेक्स्ट को नई लाइन के साथ चिपकाया उदाहरण के लिए हैलो \ n वर्ल्ड मैंने चिपकाया

नमस्ते

विश्व

इंटरफेस बिल्डर में।


\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);

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

// स्विफ्ट 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;  

यदि आप किसी XML फ़ाइल से स्ट्रिंग पढ़ते हैं, तो इस स्ट्रिंग में लाइन ब्रेक \n UILabel टेक्स्ट में काम नहीं करेगा। \n को लाइन ब्रेक पर पार्स नहीं किया गया है।

इस मुद्दे को हल करने के लिए यहां एक छोटी सी चाल है:

// correct next line \n in string from XML file
NSString *myNewLineStr = @"\n";
myLabelText = [myLabelText stringByReplacingOccurrencesOfString:@"\\n" withString:myNewLineStr];

myLabel.text = myLabelText;

तो आपको एक हार्डकोडेड NSString में एक पार्स किए गए \n द्वारा अपनी स्ट्रिंग में unparsed \n भाग को प्रतिस्थापित करना होगा।

यहां मेरी अन्य लेबल सेटिंग्स हैं:

myLabel.numberOfLines = 0;
myLabel.backgroundColor = [UIColor lightGrayColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentCenter;

सबसे महत्वपूर्ण है numberOfLines को 0 पर सेट करना (= लेबल में लाइनों की असीमित संख्या)।

कोई विचार नहीं कि ऐप्पल ने XML से पढ़ने वाले तारों में \n पार्स क्यों नहीं चुना है?

उम्मीद है की यह मदद करेगा।


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

एक्सकोड 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;

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


विशेष रूप से ऑटोलायआउट का उपयोग करते समय लेबल फ्रेम आकार को बदलने में मुझे गलत लगता है। 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;

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


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;

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

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

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


NSCharacterSet *charSet = NSCharacterSet.newlineCharacterSet;
NSString *formatted = [[unformatted componentsSeparatedByCharactersInSet:charSet] componentsJoinedByString:@"\n"];

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


लाइन फीड डालने के लिए इंटरफ़ेस बिल्डर में छोटे बॉक्स में टाइप करते समय विकल्प-वापसी का उपयोग करें (\ n)। इंटरफ़ेस बिल्डर के लेबल विशेषताओं में, # Lines = 0 सेट करें।

लेबल का चयन करें और फिर उपरोक्त छवि में 0 से लाइन्स प्रॉपर्टी को बदलें, और उसके बाद \ n लाइन ब्रेक के लिए अपनी स्ट्रिंग में \ n का उपयोग करें।





line-breaks