कृपया मेरे जिस्ट की जांच करें जहां मैंने UILabel
कुछ समान के लिए एक श्रेणी बनाई है , मेरी श्रेणी UILabel
सभी सामग्री को दिखाने के लिए एक ऊँचाई देती है: https://gist.github.com/1005520
या इस पोस्ट को देखें: https://stackoverflow.com/a/7242981/662605
यह ऊंचाई को बढ़ाएगा, लेकिन आप इसे दूसरी तरह से काम करने के लिए आसानी से बदल सकते हैं और चौड़ाई को कुछ इस तरह से बढ़ा सकते हैं, जो मुझे विश्वास है कि आप क्या करना चाहते हैं:
@implementation UILabel (dynamicSizeMeWidth)
- (void)resizeToStretch{
float width = [self expectedWidth];
CGRect newFrame = [self frame];
newFrame.size.width = width;
[self setFrame:newFrame];
}
- (float)expectedWidth{
[self setNumberOfLines:1];
CGSize maximumLabelSize = CGSizeMake(CGRectGetWidth(self.bounds), CGFLOAT_MAX);
CGSize expectedLabelSize = [[self text] sizeWithFont:[self font]
constrainedToSize:maximumLabelSize
lineBreakMode:[self lineBreakMode]];
return expectedLabelSize.width;
}
@end
आप क्लास sizeToFit
से उपलब्ध विधि का अधिक उपयोग कर सकते हैं UIView
, लेकिन सुरक्षित रहने के लिए लाइनों की संख्या को 1 पर सेट करें।
iOS 6 अपडेट
यदि आप AutoLayout का उपयोग कर रहे हैं, तो आपके पास एक अंतर्निहित समाधान है। रेखाओं की संख्या को 0 पर सेट करके, फ्रेमवर्क आपके लेबल को आपके पाठ को फिट करने के लिए उचित रूप से (अधिक ऊंचाई जोड़कर) आकार देगा।
iOS 8 अपडेट
sizeWithFont:
sizeWithAttributes:
इसके बजाय पदावनत किया जाता है:
- (float)expectedWidth{
[self setNumberOfLines:1];
CGSize expectedLabelSize = [[self text] sizeWithAttributes:@{NSFontAttributeName:self.font}];
return expectedLabelSize.width;
}