ios label根據內容自適應高度

label自適應高度,想必你們也都很熟悉怎麼去作,上代碼:

UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(150, 50, 150, 0)]; label3.font = [UIFont systemFontOfSize:15]; label3.backgroundColor = [UIColor yellowColor]; label3.numberOfLines = 0; label3.text = str; CGSize size = [label3 sizeThatFits:CGSizeMake(label3.frame.size.width, MAXFLOAT)]; label3.frame = CGRectMake(label3.frame.origin.x, label3.frame.origin.y, label3.frame.size.width, size.height); NSLog(@"label3.frame = %@",NSStringFromCGRect(label3.frame)); [self.view addSubview:label3]; 

可是這個地方有點小問題,###1:我不知道你們處理的習慣(比較菜,勿噴),我比較習慣把處理UI的邏輯和賦值的邏輯分開,那麼就會有這樣的代碼oop

- (void)viewDidLoad { [super viewDidLoad]; [self initUI]; self.label.text = @"啥都不是較好的發佈會絕對是部分誰看見對方比較快速的步伐會盡快"; } -(void)initUI { self.label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 100, 30)]; self.label.numberOfLines = 0; self.label.textColor = [UIColor blackColor]; CGSize size = [self.label sizeThatFits:CGSizeMake(self.label.frame.size.width, MAXFLOAT)]; self.label.frame = CGRectMake(self.label.frame.origin.x, self.label.frame.origin.y, self.label.frame.size.width, size.height); [self.view addSubview:self.label]; } 

可是運行後你會發現,什麼也沒有!打印label.frame--- label[18169:1891997] {{10, 100}, {100, 0}} 這是由於咱們在initUI方法中並無給label賦值,那麼label的高度默認爲0了,因此處理自適應的時候只能在賦值以後再進行自適應的操做。ui

第二個問題:若是咱們有那種對齊的需求的話,若是文字比較少,那麼可能會出現文字偏上的效果,這時候咱們能夠在自適應後,根據label高度判斷,修改其高度。以下:

self.titleL.text = model.cooperationInverseVO.ipDemandtitle; CGSize size = [self.titleL sizeThatFits:CGSizeMake(self.titleL.frame.size.width, MAXFLOAT)]; self.titleL.frame = CGRectMake(self.titleL.frame.origin.x, self.titleL.frame.origin.y, self.titleL.frame.size.width, size.height); self.titleL.textColor = [UIColor colorWithHexString:@"#666666"]; ///若是高度不足一行 強制爲原來一行的高度 if (self.titleL.hb_height < cellHeight) { self.titleL.hb_height = cellHeight; }
相關文章
相關標籤/搜索