मैं UILabels के लिए ऊंचाई से निपटने के लिए एक श्रेणी बनाई
#import <UIKit/UIKit.h>
@interface UILabel (TCFlexibleHeight)
- (CGFloat)heightForText:(NSString*)text;
- (CGFloat)heightForCurrentText;
- (CGFloat)adjustHeightForCurrentText;
@end
यू ILabel + TCFlexibleHeight.m:
[themeLabel setFrame:CGRectMake(leftMargin, mainScrollView.frame.origin.y + topPadding, 274, [themeLabel heightForCurrentText])];
ध्यान दें कि इस श्रेणी के लिए जिम्मेदार ठहराया तार संभाल नहीं करता है और पंक्ति लपेटना क्लिप करने के लिए सेट की आवश्यकता होती है:
#import "UILabel+TCFlexibleHeight.h"
static const NSInteger kMaxLines = 1000;
@implementation UILabel (TCFlexibleHeight)
- (CGFloat)heightForText:(NSString*)text {
if (text == nil) {
return 0;
}
NSInteger numberOfLines = self.numberOfLines > 0 ? self.numberOfLines : kMaxLines;
CGSize size = CGSizeMake(self.frame.size.width, self.font.lineHeight * numberOfLines);
return [text sizeWithFont:self.font constrainedToSize:size lineBreakMode:self.lineBreakMode].height;
}
- (CGFloat)heightForCurrentText {
return [self heightForText:self.text];
}
- (CGFloat)adjustHeightForCurrentText {
CGFloat height = [self heightForCurrentText];
CGRect frame = self.frame;
frame.size.height = height;
return height;
}
@end
इस श्रेणी के लिए अपने कोड कुछ इस तरह हो जाएगा
चरित्र के लिए।
लौटाई जाने वाली चौड़ाई क्या है? – Fogmeister
ऊंचाई को 'CGFloat' के रूप में व्यक्त किया जाता है, इसलिए' शून्य 'समझ में नहीं आता है। – trojanfoe
@Fogmeister इसे 'sizeThatFits' का उपयोग करने के बाद 0.0 और मैन्युअल रूप से सेट करने के बाद 274 –