[英]UILabel with fixed width and flexible height
我在明細視圖控制器中有一個UILabel,因此其內容根據所選的表行而變化。 我遇到問題,我會根據文本設置UILabel的固定寬度和動態高度。 我怎樣才能做到這一點? (為我的錯誤感到抱歉,但我不是英語)
我喜歡將UILabel
子類UILabel
我做。
AutosizingLabel.h
#import <UIKit/UIKit.h>
@interface AutosizingLabel : UILabel {
double minHeight;
}
@property (nonatomic) double minHeight;
- (void)calculateSize;
@end
AutosizingLabel.m
#define MIN_HEIGHT 10.0f
#import "AutosizingLabel.h"
@implementation AutosizingLabel
@synthesize minHeight;
- (id)init {
if ([super init]) {
self.minHeight = MIN_HEIGHT;
}
return self;
}
- (void)calculateSize {
CGSize constraint = CGSizeMake(self.frame.size.width, 20000.0f);
CGSize size = [self.text sizeWithFont:self.font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
[self setLineBreakMode:UILineBreakModeWordWrap];
[self setAdjustsFontSizeToFitWidth:NO];
[self setNumberOfLines:0];
[self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, MAX(size.height, MIN_HEIGHT))];
}
- (void)setText:(NSString *)text {
[super setText:text];
[self calculateSize];
}
- (void)setFont:(UIFont *)font {
[super setFont:font];
[self calculateSize];
}
@end
要使用此功能,請在項目中導入/創建.h和.m文件。 然后,如果您正在用代碼創建UILabel
,它將看起來像這樣:
#import "AutosizingLabel.h"
- (void)viewDidLoad {
[super viewDidLoad];
AutosizingLabel *label = [[AutosizingLabel alloc] init];
label.text = @"Some text here";
[self.view addSubview:label];
}
如果您使用的是XIB,則可以選擇任何UILabel,然后單擊右側欄中的Identity Inspector,將其類設置為AutosizingLabel
。 無論哪種情況,設置.text
屬性都會自動更新標簽的大小。
您可以做到..這是代碼。
UILabel *yourlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, sizeToFit)];
yourlabel.numberOfLines = 0;
對於任何查詢,請發表評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.