ইউআইএলবেলের জন্য লাইন ব্রেক কীভাবে যুক্ত করবেন?


262

দেখি যে আমার মতো স্ট্রিং লুক রয়েছে:

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

আমি কীভাবে এটি তৈরি করব যাতে ইউআইআইএলএল এই বার্তাটি প্রদর্শন করে

AAAAA
BBBBB
CCCCC

আমি \nইউআইএলবেল দ্বারা স্বীকৃত বলে মনে করি না , তাই এনএসএসআরংয়ের ভিতরে এমন কিছু আছে যা আমি রাখতে পারি যাতে ইউআইএলবেল জানে যে এটি সেখানে একটি লাইন ব্রেক তৈরি করতে হবে?

উত্তর:


332

ব্যবহার করুন \nযেমন আপনি আপনার স্ট্রিং ব্যবহার করছেন।

যে কোনও সংখ্যক লাইনের জন্য অনুমতি দিতে নম্বর অফফ্লাইনগুলি 0 তে সেট করুন।

label.numberOfLines = 0;

ব্যবহার করে পাঠ্যের আকারের সাথে মেলে লেবেল ফ্রেমটি আপডেট করুন sizeWithFont:। আপনি যদি এটি না করেন তবে আপনার পাঠ্যটি উল্লম্বভাবে কেন্দ্রিক হবে বা কেটে যাবে cut

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:

অবহেলিত আকারের জন্য রেফারেন্স, প্রতিস্থাপনের সাথে আইওএস 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
UILabelএকটি নেই originকিংবা sizeiOS এ সম্পত্তি? এটি সম্ভবত label.frame.origin.xইত্যাদি হওয়া উচিত
পিটারডক

1
আকারের অ্যাট্রিবিউটের সাথে ফ্রেমটি সেট করার পরিবর্তে আপনি কেবলমাত্র সাইজটিফিটকে ওয়ার্ক আউট করতে কল করতে পারেন এবং একটি দ্রুত পদক্ষেপে ফ্রেমের আকার সেট করতে পারেন।
জিমিযুদাস

@ হার্মাং, উত্তরটি আপ টু ডেটে আনার জন্য সম্পাদনা করার জন্য ধন্যবাদ
গেরি শ

274

এখানে চিত্র বর্ণনা লিখুন

একটি লাইন ফিড \োকাতে ইন্টারফেস বিল্ডারের ছোট্ট বাক্সে টাইপ করার সময় বিকল্প-রিটার্ন ব্যবহার করুন return ইন্টারফেস বিল্ডারের লেবেল বৈশিষ্ট্যে, # লাইন = 0 সেট করুন।

লেবেলটি নির্বাচন করুন এবং তারপরে উপরের চিত্রের মতো লাইনের বৈশিষ্ট্য 0 তে পরিবর্তন করুন এবং তারপরে লাইন ব্রেকের জন্য আপনার স্ট্রিংয়ে \ n ব্যবহার করুন।


2
এটি অত্যন্ত দরকারী!
নিতিন আলাবুর

চিরকাল এটির জন্য চেয়েছিলেন। ধন্যবাদ :)
শাই মিশালী

চমত্কার উত্তর। ধন্যবাদ!
ম্যাকনডো

1
প্রোগ্রামালিমে লেবেল সেট করার সময় এবং স্ট্রিংয়ে \ n (নিউলাইন) যুক্ত করার সময় কাজ করে না।
চিউই দ্য চোরকি

আশ্চর্যজনক। আমার প্রয়োজন ছিল কেবল স্টোরিবোর্ডের লেবেল দিয়ে এটি করা। এবং এটি একটি কবজ মত কাজ।
তেজাস

132

আপনি যদি কোনও এক্সএমএল ফাইল থেকে একটি স্ট্রিং পড়েন তবে \nএই স্ট্রিংয়ের লাইন ব্রেকটি UILabelপাঠ্যে কাজ করবে না । \nএকটি লাইন বিরতি বিশ্লেষণ করা হয় না।

এই সমস্যাটি সমাধান করার জন্য এখানে একটি সামান্য কৌশল:

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

myLabel.text = myLabelText;

সুতরাং আপনাকে \nআপনার স্ট্রিংয়ের অংশবিহীন অংশটিকে \nএকটি হার্ডকোডে পার্সড করে প্রতিস্থাপন করতে হবে NSString

এখানে আমার অন্যান্য লেবেল সেটিংস:

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)

\nএক্সএমএল থেকে পড়া স্ট্রিংগুলিকে বিশ্লেষণ করা কেন অ্যাপল বেছে নিয়েছে তা ধারণা নেই ?

আশাকরি এটা সাহায্য করবে.


1
\nপার্স.কম থেকে স্ট্রিংগুলি পাওয়ার সময় আইওএস বিশ্লেষণ করে না (আমার ধারণা অন্যান্য এপিআই থেকে স্ট্রিং পেয়েও এটি ঘটবে)
ব্রায়ান

আপনি আমার দিন বাঁচিয়েছেন। আমি এক্সএমএল ফাইলগুলি থেকে নতুন লাইনের সাথে স্ট্রিং পাচ্ছি।
সেন্রি

127

ইন্টারফেস বিল্ডারে আপনি যে অবস্থানটি চান তা সন্নিবেশ করতে আপনি Ctrl+ ব্যবহার করতে পারেন। এই উপায় নিম্নলিখিত পরিস্থিতি বাস্তবায়ন করতে পারেEnter/n

AAA
aaaaaaa


না, আমি ভোটকে নামি না। আমি আরও ভাল উপস্থাপনার জন্য উত্তরটি সম্পাদনা করেছি।
মনোজ কুমার

সত্যিই সহজ! +1
মারলোনপ্যা

2
বিশ্বাস করতে পারি না আমি কখনই সেই কৌশলটি জানতাম না! আমি শিফট-এন্টার চেষ্টা করেছি কারণ এটি অন্য কোথাও মোটামুটি স্ট্যান্ডার্ড। তার জন্য ধন্যবাদ!
এচেলন

এটি ঠিক আমি যা খুঁজছিলাম ছিল! ধন্যবাদ +1!
রিক্রভো

1
দুর্দান্ত পোস্ট! ছোট সংশোধন: আমার বিশ্বাস আপনি সন্নিবেশ / এন এর পরিবর্তে
ক্র্যাফট

25

আপনি numberOfLinesসম্পত্তি সেট করতে হবে UILabel। ডিফল্টটি হ'ল 1 , যদি আপনি এটি 0 তে সেট করেন তবে এটি সমস্ত সীমা সরিয়ে ফেলবে।


22

খেয়াল করা জরুরী এটা \n(ব্যাকস্ল্যাশ) বদলে /n


10

সুইফটে 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"
 }

6

// নম্বর অফফাইনগুলি শূন্যে সেট করতে ভুলবেন না

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

6

শুধু এটি করা

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;

4

এক্সকোড On-এ, শব্দ মোড়ানো ব্যবহার করার সময় আপনি কেবল একটি স্ট্রিংয়ের মধ্যেই \ 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;

3

যদি UILabelআপনি এটির ব্যবহার করে থাকেন তবে আপনার মনে রাখতে হবে যে ডিফল্ট সেটিংসটি 1 লাইন, তাই আপনি কতগুলি ব্রেক ( \nবা \r) যুক্ত করেন তা বিবেচনা করে না , আপনাকে এটি নিশ্চিত করতে হবে যে এটি একাধিক লাইনে সেট করা আছে যাতে এটি যুক্ত হওয়ার অনুমতি দেওয়া যেতে পারে আরও লাইন

একটি বিকল্প ব্যবহার করা UITextViewযা সত্যিকার অর্থে মাল্টিলিনগুলির জন্য বোঝানো হয়।

আপনি ইউিলাবেলের XCode বৈশিষ্ট্য বিভাগে এটি সহজেই অর্জন করতে পারেন, স্ক্রিনশটটি দেখুন:

এখানে চিত্র বর্ণনা লিখুন


3

আপনারা যারা সহজ সমাধান চান তাদের জন্য পাঠ্য লেবেল ইনপুট বাক্সে নিম্নলিখিতটি করুন:

আপনার নম্বর লাইন 0 তে সেট করা আছে তা নিশ্চিত করুন।

Alt + enter

(আল্ট আপনার বিকল্প কী)

চিয়ার্স!



2

আমার ক্ষেত্রেও working n কাজ করছে না, আমি 0 টি লাইন রেখে সংখ্যাটি স্থির করে দিয়েছি এবং হ্যালো World n ওয়ার্ল্ডের পরিবর্তে টেক্সটটি নতুন লাইনের সাথে অনুলিপি করে আটকিয়েছি i

হ্যালো

বিশ্ব

ইন্টারফেস বিল্ডারে।


অসাধারণ! কাজ করে।
দিমিত্রিকানুন্নিকফ

2

এক্সকোড 11 এ, সুইফট 5 টি \nসূক্ষ্ম কাজ করে, নীচের কোডটি চেষ্টা করুন:

textlabel.numberOfLines = 0
textlabel.text = "This is line one \n This is line two \n This is line three"

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

0

sizeWithFont:constrainedToSize:lineBreakMode:আইওএস 8-এ স্যুইচ করতে বা অন্য কারওর সাথে সমস্যা হতে পারে এমন কারও জন্য (পদ্ধতিটি আইওএস 7 হিসাবে অবমূল্যায়ন করা হয়েছে), 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);

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

0

লেবেল ফ্রেমের আকারগুলি পরিবর্তন করা আমার পক্ষে ভুল বলে মনে হচ্ছে বিশেষত অটোলেআউট ব্যবহার করার সময়। অ্যাপেন্ডফরম্যাট পদ্ধতিটি ব্যবহার করা আরও উপযুক্ত বলে মনে হচ্ছে। এখানে আমার উদাহরণ:

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;

0

আপনি যদি আপনার ইউআইএল বৈশিষ্ট্যগুলি সমতল থেকে বৈশিষ্ট্যযুক্ত হিসাবে সেট করেন ... তবে ইউআইএলবেল একাধিক অনুচ্ছেদে যে কোনও প্যারাগ্রাফের পাশাপাশি আপনার ইউআইএলবেলের উচ্চতা এবং প্রস্থ আপনি যে পাঠ্যটি প্রদর্শন করতে চান সেই স্ক্রিনের জায়গার সাথে মানানসই সেট করে matter


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;  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.