লেখার UILabel
মতো একাধিক লাইন রাখার উপায় কি এর UITextView
পরিবর্তে আমার দ্বিতীয়টি ব্যবহার করা উচিত?
লেখার UILabel
মতো একাধিক লাইন রাখার উপায় কি এর UITextView
পরিবর্তে আমার দ্বিতীয়টি ব্যবহার করা উচিত?
উত্তর:
আমি একটি সমাধান খুঁজে পেয়েছি।
একজনকে কেবল নিম্নলিখিত কোডটি যুক্ত করতে হবে:
// Swift
textLabel.lineBreakMode = .ByWordWrapping // or NSLineBreakMode.ByWordWrapping
textLabel.numberOfLines = 0
// For Swift >= 3
textLabel.lineBreakMode = .byWordWrapping // notice the 'b' instead of 'B'
textLabel.numberOfLines = 0
// Objective-C
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
// C# (Xamarin.iOS)
textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;
পুরাতন উত্তর পুনরুদ্ধার করা হয়েছে (রেফারেন্সের জন্য এবং below.০ এর নীচে আইওএস সমর্থন করতে আগ্রহী ডেভস):
textLabel.lineBreakMode = UILineBreakModeWordWrap;
textLabel.numberOfLines = 0;
পাশে: উভয় এনাম মানগুলি 0
যেভাবেই লাভ করে।
cell.textLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping
cell.textLabel?.numberOfLines = 0
আইবিতে, 0 টি লাইনের সংখ্যা নির্ধারণ করুন (সীমাহীন লাইনের অনুমতি দেয়)
আইবি ব্যবহার করে পাঠ্য ক্ষেত্রের মধ্যে টাইপ করার সময়, কোনও রিটার্ন সন্নিবেশ করতে "Alt-রিটার্ন" ব্যবহার করুন এবং পরবর্তী লাইনে যান (বা আপনি ইতিমধ্যে লাইন দ্বারা পৃথক পৃথক পাঠ্যে অনুলিপি করতে পারেন)।
আমি যে সেরা সমাধানটি খুঁজে পেয়েছি (অন্যথায় হতাশাব্যঞ্জক সমস্যার সমাধান করা উচিত যা ফ্রেমওয়ার্কে সমাধান করা উচিত) ভাইচিকের মতো।
আইবি বা কোড দুটিতে কেবল লাইন সংখ্যা 0 সেট করুন
myLabel.numberOfLines = 0;
এটি প্রয়োজনীয় রেখাগুলি প্রদর্শন করবে তবে লেবেলটি অনুভূমিকভাবে কেন্দ্রীভূত করবে (যাতে একটি 1 লাইন এবং 3 লাইন লেবেল তাদের অনুভূমিক অবস্থানে সারিবদ্ধ হয়)। যোগ করুন ঠিক করতে:
CGRect currentFrame = myLabel.frame;
CGSize max = CGSizeMake(myLabel.frame.size.width, 500);
CGSize expected = [myString sizeWithFont:myLabel.font constrainedToSize:max lineBreakMode:myLabel.lineBreakMode];
currentFrame.size.height = expected.height;
myLabel.frame = currentFrame;
myUILabel.numberOfLines = 0;
myUILabel.text = @"your long string here";
[myUILabel sizeToFit];
আপনি যদি ব্যবহার করতে হয়:
myLabel.numberOfLines = 0;
বৈশিষ্ট্য আপনি ("\n")
একটি নতুন লাইন জোর করতে কোডে একটি স্ট্যান্ডার্ড লাইন ব্রেক ব্যবহার করতে পারেন ।
এটি চেষ্টা করুন
textLabel.lineBreakMode = NSLineBreakModeWordWrap; // UILineBreakModeWordWrap deprecated
textLabel.numberOfLines = 0;
textLabel.lineBreakMode = UILineBreakModeWordWrap;
textLabel.numberOfLines = 0;
উপরের সমাধানটি আমার ক্ষেত্রে কার্যকর হয় না। আমি এইভাবে করছি:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// ...
CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0] constrainedToSize:CGSizeMake(240.0, 480.0) lineBreakMode:UILineBreakModeWordWrap];
return size.height + 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
// ...
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Georgia-Bold" size:18.0];
}
// ...
UILabel *textLabel = [cell textLabel];
CGSize size = [text sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0]
constrainedToSize:CGSizeMake(240.0, 480.0)
lineBreakMode:UILineBreakModeWordWrap];
cell.textLabel.frame = CGRectMake(0, 0, size.width + 20, size.height + 20);
//...
}
স্টোরি বোরাড ব্যবহার করুন: শূন্যে লাইন সংখ্যা নির্ধারণ করতে লেবেলটি নির্বাচন করুন ...... বা এটি উল্লেখ করুন
গতিশীল পাঠ্য তথ্যের জন্য সুইফট 3 লাইন শূন্যের সংখ্যা নির্ধারণ করুন, এটি বিভিন্ন পাঠ্যের জন্য কার্যকর হবে।
var label = UILabel()
let stringValue = "A label\nwith\nmultiline text."
label.text = stringValue
label.numberOfLines = 0
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame
UILabel *helpLabel = [[UILabel alloc] init];
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:label];
helpLabel.attributedText = attrString;
// helpLabel.text = label;
helpLabel.textAlignment = NSTextAlignmentCenter;
helpLabel.lineBreakMode = NSLineBreakByWordWrapping;
helpLabel.numberOfLines = 0;
কিছু কারণে এটি আইওএসে আমার জন্য কাজ করছে না 6 কেন তা নিশ্চিত নয়। এটি বিশিষ্ট পাঠ্য সহ এবং ছাড়া চেষ্টা করে। কোন পরামর্শ.
এটি ব্যবহার করার চেষ্টা করুন:
lblName.numberOfLines = 0;
[lblName sizeToFit];
এই জিনিসগুলি আমাকে সাহায্য করেছিল
ইউআইএলবেলের এই বৈশিষ্ট্যগুলি পরিবর্তন করুন
label.numberOfLines = 0;
label.adjustsFontSizeToFitWidth = NO;
label.lineBreakMode = NSLineBreakByWordWrapping;
এবং ইনপুট দেওয়ার সময় স্ট্রিং lines n বিভিন্ন লাইনে বিভিন্ন শব্দ প্রদর্শন করতে ব্যবহার করুন।
উদাহরণ:
NSString *message = @"This \n is \n a demo \n message for \n stackoverflow" ;
পদ্ধতি 1:
extension UILabel {//Write this extension after close brackets of your class
func lblFunction() {
numberOfLines = 0
lineBreakMode = .byWordWrapping//If you want word wraping
//OR
lineBreakMode = .byCharWrapping//If you want character wraping
}
}
এখন সহজভাবে কল করুন
myLbl.lblFunction()//Replace your label name
গো EX:
Import UIKit
class MyClassName: UIViewController {//For example this is your class.
override func viewDidLoad() {
super.viewDidLoad()
myLbl.lblFunction()//Replace your label name
}
}//After close of your class write this extension.
extension UILabel {//Write this extension after close brackets of your class
func lblFunction() {
numberOfLines = 0
lineBreakMode = .byWordWrapping//If you want word wraping
//OR
lineBreakMode = .byCharWrapping//If you want character wraping
}
}
পদ্ধতি 2:
প্রোগ্রামেটিক্যালি
yourLabel.numberOfLines = 0
yourLabel.lineBreakMode = .byWordWrapping//If you want word wraping
//OR
yourLabel.lineBreakMode = .byCharWrapping//If you want character wraping
পদ্ধতি 3:
স্টোরি বোর্ডের মাধ্যমে
একাধিক লাইন সেট 0 (জিরো) প্রদর্শন করতে, এটি আপনার লেবেলে একাধিক লাইন প্রদর্শন করবে।
আপনি যদি এন লাইনগুলি প্রদর্শন করতে চান তবে এন সেট করুন।
নীচে পর্দা দেখুন।
আপনি যদি লেবেলের জন্য ন্যূনতম ফন্টের আকার সেট করতে চান তবে অটোশ্রিংকে ক্লিক করুন এবং ন্যূনতম ফন্টের আকার নির্বাচন করুন
নীচে পর্দা দেখুন
এখানে ন্যূনতম ফন্টের আকার নির্ধারণ করুন
EX: 9 (এই চিত্রটিতে)
যদি আপনার লেবেলটি আরও পাঠ্য পেয়ে থাকে তবে আপনার লেবেল পাঠ্য 9 অবধি সঙ্কুচিত হবে
UILabel *labelName = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
[labelName sizeToFit];
labelName.numberOfLines = 0;
labelName.text = @"Your String...";
[self.view addSubview:labelName];
আপনি স্টোরিবোর্ডের মাধ্যমে এটিও করতে পারেন:
আপনার এটি চেষ্টা করা উচিত:
-(CGFloat)dynamicLblHeight:(UILabel *)lbl
{
CGFloat lblWidth = lbl.frame.size.width;
CGRect lblTextSize = [lbl.text boundingRectWithSize:CGSizeMake(lblWidth, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:lbl.font}
context:nil];
return lblTextSize.size.height;
}
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 150, 30)];
[textLabel sizeToFit];
textLabel.numberOfLines = 0;
textLabel.text = @"Your String...";
এই ফাংশনটি পাস স্ট্রিংয়ে আপনি লেবেলে বরাদ্দ করতে চান এবং স্ব.অ্যাক্টিভিটিফন্টের জায়গায় ফন্টের আকারটি পাস করতে চান এবং 235 এর স্থানে লেবেলের প্রস্থটি পাস করতে চান, এখন আপনি আপনার স্ট্রিং অনুযায়ী লেবেলের উচ্চতা পাবেন। এটা ঠিক কাজ করবে।
-(float)calculateLabelStringHeight:(NSString *)answer
{
CGRect textRect = [answer boundingRectWithSize: CGSizeMake(235, 10000000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.activityFont} context:nil];
return textRect.size.height;
}
কোড বা স্টোরিবোর্ডে নিজেই নীচে সেট করুন
Label.lineBreakMode = NSLineBreakByWordWrapping; Label.numberOfLines = 0;
এবং দয়া করে লেবেলের জন্য বাম, ডান, উপরের এবং নীচের সীমাবদ্ধতাগুলি সেট করতে ভুলবেন না অন্যথায় এটি কাজ করবে না।
সুইফট 4:
label.lineBreakMode = .byWordWrapping
label.numberOfLines = 0
label.translatesAutoresizingMaskIntoConstraints = false
label.preferredMaxLayoutWidth = superview.bounds.size.width - 10
সি # তে, এটি ইউআইটিএবলভিউসিলের মধ্যে আমার জন্য কাজ করেছে।
UILabel myLabel = new UILabel();
myLabel.Font = UIFont.SystemFontOfSize(16);
myLabel.Lines = 0;
myLabel.TextAlignment = UITextAlignment.Left;
myLabel.LineBreakMode = UILineBreakMode.WordWrap;
myLabel.MinimumScaleFactor = 1;
myLabel.AdjustsFontSizeToFitWidth = true;
myLabel.InvalidateIntrinsicContentSize();
myLabel.Frame = new CoreGraphics.CGRect(20, mycell.ContentView.Frame.Y + 20, cell.ContentView.Frame.Size.Width - 40, mycell.ContentView.Frame.Size.Height);
myCell.ContentView.AddSubview(myLabel);
আমি মনে করি এখানে কথাটি হ'ল: -
myLabel.TextAlignment = UITextAlignment.Left;
myLabel.LineBreakMode = UILineBreakMode.WordWrap;
myLabel.MinimumScaleFactor = 1;
myLabel.AdjustsFontSizeToFitWidth = true;
এই কোডটি পাঠ্য অনুযায়ী আকারের উচ্চতা ফিরিয়ে দিচ্ছে
+ (CGFloat)findHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font
{
CGFloat result = font.pointSize+4;
if (text)
{
CGSize size;
CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, 999)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:font}
context:nil];
size = CGSizeMake(frame.size.width, frame.size.height+1);
result = MAX(size.height, result); //At least one row
}
return result;
}
UILineBreakModeWordWrap
আইওএস 6-এ অসমর্থিত হয়েছে আপনি এখন ব্যবহার করা উচিতNSLineBreakByWordWrapping = 0
ডকুমেন্টেশন দেখুন এখানে