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
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; }