sizeToFit的使用

sizeToFit的使用

- (void)sizeToFit;

1.是什么

该方法是UIview 的接口方法,适用于所有的 UI层控件

2.干什么用的

自适应 控件宽高 用的

3.使用方法(以UIlable 为例)

 NSString *messge = @"这是一组测试数据"; 
 UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 30, 30)];
 lable.backgroundColor = [UIColor lightGrayColor];
 lable.text = messge;
 [self.view addSubview:lable];

运行结果:


sizeToFit的使用_第1张图片
原始布局

结论:由于控件宽度太小导致文字显示不出来

添加上一行代码[lable sizeToFit];(注意!该行代码要添加在赋值语句的后面)后
运行结果:

sizeToFit的使用_第2张图片
自适应布局

结论:文字可以完整的显示在控件上



4.与numberOfLines的关系 (以UIlable 为例)

    NSString *messge = @"这是一组测试数据numberOfLines";
    UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 30, 30)];
    lable.backgroundColor = [UIColor lightGrayColor];
    lable.text = messge;
    [self.view addSubview:lable];
    lable.numberOfLines = 2;//行数
    [lable sizeToFit];

现在将numberOfLines置为2;
运行结果为:

sizeToFit的使用_第3张图片
lable.numberOfLines = 2

numberOfLines置为0;
运行结果为:

sizeToFit的使用_第4张图片
lable.numberOfLines = 0

numberOfLines置为1;(默认值,可以省略不写)
运行结果为:

sizeToFit的使用_第5张图片
lable.numberOfLines = 1

结论:
1.要满足控件横向自适应宽高,需要控件的numberOfLines值为默认值1;
2.numberOfLines≠1时, sizeToFit自适应以高度为主,分行进行展示,具体分几行展示取决于numberOfLines的具体值为多少,如果在设定的行数内没内有展示完内容,则会以省略号的形式进行展示.

5.总结

1.给控件赋值时,在赋值语句的后面添加一句代码[lable sizeToFit];可以实现 控件宽高 的自适应;
2.相较于传统的先计算出内容的实际宽高,再改变控件 frame手动布局方式,这种自动布局方式更加便捷、简洁.
3.sizeToFit会改变控件的宽度与高度(size),以达到完整显示内容的目的;并不会改变控件的坐标X/Y (origin)
4.如果控件有numberOfLines属性,则该属性值会影响控件的布局.

6.注意点

1.使用sizeToFit进行自适应布局时,要注意控件的宽度与高度都会改变,这两个变的值都需要考虑到,防止考虑不周,出现布局误差.

END

你可能感兴趣的:(sizeToFit的使用)