imageEdgeInsets和titleEdgeInsets
主要是影响image和title的相对位置,并不会改变button的大小
contentEdgeInsets
表示整个button要扩充的大小
什么都没设置
intrinsicContentSize-> width:70,hight:40
UIEdgeInsetsMake(40, 0, 0, 0);
top的宽度有40
如果在初始化直接设定了约束使用intrinsicContentSize,就会出现被压缩的情况
intrinsicContentSize-> width:70,hight:40
如果在viewWillLayoutSubviews时更新width和height的约束
intrinsicContentSize-> width:70,hight:80
- (void)viewWillLayoutSubviews
{
CGSize size = self.btn.intrinsicContentSize;
self.widthConstr.constant = size.width;
self.heightConstr.constant = size.height;
}
UIEdgeInsetsMake(0, 0, 40, 0);
UIEdgeInsetsMake(40, 0, 40, 0);
intrinsicContentSize-> width:70,hight:120
UIEdgeInsetsMake(-40, 0, 40, 0);
intrinsicContentSize-> width:70,hight:40
UIEdgeInsetsMake(0, 40, 0, 0);
intrinsicContentSize-> width:110,hight:40
UIEdgeInsetsMake(0, 40, 0, -40);
intrinsicContentSize-> width:70,hight:40
titleEdgeInsets
不会影响intrinsicContentSize
UIEdgeInsetsMake(40, 0, 0, 0);
intrinsicContentSize
系统会自动帮忙计算UIButton内的size,如果修改了contentEdgeInsets或者titleEdgeInsets也会更改size,但是需要在viewWillAppear,viewWillLayoutSubviews,viewDidAppear中获取