উত্তর:
CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:yourLabel.lineBreakMode];
কী - [এনএসএস স্ট্রিং সাইজ উইথফন্ট: ফর উইথথ: লাইনব্রেকমোড:] ভাল?
এই প্রশ্নের আপনার উত্তর থাকতে পারে, এটি আমার পক্ষে কাজ করে।
2014 এর জন্য, আমি নীচে নরবার্টের অতি-কার্যকর মন্তব্যের ভিত্তিতে এই নতুন সংস্করণে সম্পাদনা করেছি! এটি সবকিছু করে। চিয়ার্স
// yourLabel is your UILabel.
float widthIs =
[self.yourLabel.text
boundingRectWithSize:self.yourLabel.frame.size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{ NSFontAttributeName:self.yourLabel.font }
context:nil]
.size.width;
NSLog(@"the width of yourLabel is %f", widthIs);
self.yourLabel.intrinsicContentSize
এটি আপনাকে লেবেলের সামগ্রীর আকার দেবে, আপনি সেখান থেকে প্রস্থটি পেতে পারেন।
yourLabel.intrinsicContentSize.width
দুর্দান্ত কাজ করে, নীচের উত্তরটি চেক করুন।
নির্বাচিত উত্তরটি আইওএস 6 এবং নীচের জন্য সঠিক।
আইওএস 7-এ, অবচিতsizeWithFont:constrainedToSize:lineBreakMode:
করা হয়েছে । এটি এখন আপনার ব্যবহারের পরামর্শ দেওয়া হচ্ছে ।boundingRectWithSize:options:attributes:context:
CGRect expectedLabelSize = [yourString boundingRectWithSize:sizeOfRect
options:<NSStringDrawingOptions>
attributes:@{
NSFontAttributeName: yourString.font
AnyOtherAttributes: valuesForAttributes
}
context:(NSStringDrawingContext *)];
লক্ষ্য করুন যে রিটার্ন মান একটি CGRect
নয় CGSize
। আশা করি এটি আইওএস 7 এ ব্যবহার করা লোকদের কিছুটা সহায়তা করবে।
IOS8 আকারে উইথফন্টটি অবচিত করা হয়েছে, দয়া করে উল্লেখ করুন
CGSize yourLabelSize = [yourLabel.text sizeWithAttributes:@{NSFontAttributeName : [UIFont fontWithName:yourLabel.font size:yourLabel.fontSize]}];
আপনি আকারে যা চান তার সমস্ত বৈশিষ্ট্য যুক্ত করতে পারেনঅ্যাট্রিবিউটস সহ। অন্যান্য বৈশিষ্ট্য আপনি সেট করতে পারেন:
- NSForegroundColorAttributeName
- NSParagraphStyleAttributeName
- NSBackgroundColorAttributeName
- NSShadowAttributeName
ইত্যাদি। তবে সম্ভবত আপনার অন্যের দরকার হবে না
সুইফট 4 উত্তর যারা প্রতিবন্ধকতা ব্যবহার করছে
label.text = "Hello World"
var rect: CGRect = label.frame //get frame of label
rect.size = (label.text?.size(attributes: [NSFontAttributeName: UIFont(name: label.font.fontName , size: label.font.pointSize)!]))! //Calculate as per label font
labelWidth.constant = rect.width // set width to Constraint outlet
সুইফট 5 উত্তর যারা প্রতিবন্ধকতা ব্যবহার করছে
label.text = "Hello World"
var rect: CGRect = label.frame //get frame of label
rect.size = (label.text?.size(withAttributes: [NSAttributedString.Key.font: UIFont(name: label.font.fontName , size: label.font.pointSize)!]))! //Calculate as per label font
labelWidth.constant = rect.width // set width to Constraint outlet
CGRect rect = label.frame;
rect.size = [label.text sizeWithAttributes:@{NSFontAttributeName : [UIFont fontWithName:label.font.fontName size:label.font.pointSize]}];
label.frame = rect;
হারুনের লিঙ্ক সহ কয়েকটি এসও পোস্টের কয়েকটি নীতি প্রয়োগ করার পরে আমি এখানে কিছু জিনিস এনেছি:
AnnotationPin *myAnnotation = (AnnotationPin *)annotation;
self = [super initWithAnnotation:myAnnotation reuseIdentifier:reuseIdentifier];
self.backgroundColor = [UIColor greenColor];
self.frame = CGRectMake(0,0,30,30);
imageView = [[UIImageView alloc] initWithImage:myAnnotation.THEIMAGE];
imageView.frame = CGRectMake(3,3,20,20);
imageView.layer.masksToBounds = NO;
[self addSubview:imageView];
[imageView release];
CGSize titleSize = [myAnnotation.THETEXT sizeWithFont:[UIFont systemFontOfSize:12]];
CGRect newFrame = self.frame;
newFrame.size.height = titleSize.height + 12;
newFrame.size.width = titleSize.width + 32;
self.frame = newFrame;
self.layer.borderColor = [UIColor colorWithRed:0 green:.3 blue:0 alpha:1.0f].CGColor;
self.layer.borderWidth = 3.0;
UILabel *infoLabel = [[UILabel alloc] initWithFrame:CGRectMake(26,5,newFrame.size.width-32,newFrame.size.height-12)];
infoLabel.text = myAnnotation.title;
infoLabel.backgroundColor = [UIColor clearColor];
infoLabel.textColor = [UIColor blackColor];
infoLabel.textAlignment = UITextAlignmentCenter;
infoLabel.font = [UIFont systemFontOfSize:12];
[self addSubview:infoLabel];
[infoLabel release];
এই উদাহরণে, আমি একটি এমকেএনোটেশন ক্লাসে একটি কাস্টম পিন যুক্ত করছি যা পাঠ্যের আকার অনুসারে একটি ইউআইএলবেলকে আকার দেয়। এটি দৃশ্যের বাম দিকে একটি চিত্র যুক্ত করে, তাই আপনি কিছু কোডটি চিত্র এবং প্যাডিং পরিচালনা করার জন্য যথাযথ ব্যবধান পরিচালনা করে দেখেন।
কীটি হল ব্যবহারের CGSize titleSize = [myAnnotation.THETEXT sizeWithFont:[UIFont systemFontOfSize:12]];
এবং তারপরে দর্শনের মাত্রাগুলি পুনরায় সংজ্ঞায়িত করা। এই যুক্তি আপনি যে কোনও ভিউতে প্রয়োগ করতে পারেন।
যদিও হারুনের উত্তর কারও কারও পক্ষে কার্যকর, তা আমার পক্ষে কার্যকর হয়নি। এটি একটি আরও বিস্তৃত ব্যাখ্যা যা আপনি যদি কোনও চিত্র এবং আকার পরিবর্তনযোগ্য UILabel সহ আরও গতিশীল দৃষ্টিভঙ্গি চান তবে অন্য কোথাও যাওয়ার আগে অবিলম্বে চেষ্টা করা উচিত। আমি ইতিমধ্যে আপনার জন্য সমস্ত কাজ !!
[yourString boundingRectWithSize:maximumLabelSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:yourLabel.font } context:nil];