在平常我们使用button的时候,需求可能是需要我们满足button的Image和Label的各种体位,这个使用我们就需要使用UIEdgeInsetsMake来满足下需求,通过设置button的image和label的insetEdge来满足。
UIEdgeInsetsMake 介绍
typedef struct UIEdgeInsets {
CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
} UIEdgeInsets;
是一个结构体,里面有四个属性,上左下右,看注释大概意思是说
为每条边指定插入量。正值的话是距离边多多少,负值的话是距离边少多少

引用:
图中,蓝色标识为可变区域, 绿色标识为不变区域。UIEdgeInsets结构体的属性top与bottom为一对,用来指定纵向可变区域(黑色虚线矩形),left与right为一对,用来指定横向可变区域(白色虚线矩形)。当UIButton/UIImageView的size大于UIImage的size时,会调整图片中可变区域大小以铺满整个控件,具体调整规则如下:
(1)控件宽度大于图片宽度,拉伸白色虚线矩形
(2)控件高度大于图片高度,拉伸黑色虚线矩形
(3)控件宽度小于图片宽度时,横向整体缩小(可变区与不变区比例不变)
(4)控件高度小于图片高度时,纵向整体缩小(可变区与不变区比例不变)
实战
其实很简单,目标实现这样的一个button

我们现在的样子是这样的

-
第一步我们先将image和label都居中放置
我们让label向左便宜-imageWidth (意思就是让他往左走了imageView的宽度) [button setTitleEdgeInsets:UIEdgeInsetsMake(0, -imageWidth, 0, 0)]; 让image向右走-titleLabeWidth (意思是让他向右左了titleLabel的宽度) [button setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, -titleLabelWidth)];设置完这些后我们看下当前的效果 我们发现现在image和label都是处在居中的状态下

- 第二步我们在设置下上下的间距
让titleLabel向下偏移- imageHeight - space (意思是向下走了图片的高度+偏移) [button setTitleEdgeInsets:UIEdgeInsetsMake(0, -imageWidth, -imageHeight - space, 0)]; 同理设置imageView的偏移 [button setImageEdgeInsets:UIEdgeInsetsMake(-titleLabelHeigt - space, 0, 0, -titleLabelWidth)];
最后就实现了我们需要的效果

其实设置很简单,想清楚我们要怎么移动我们的内部空间,比如向上移动就是设置top属性同时设置一个负值这样的话对应的控件就会上移,按照这种思路设置的EdgeInset的属性都是负值
这篇博客介绍了UIEdgeInsetsMake在iOS开发中的应用,主要用于调整UIButton中Image和Label的位置。通过设置edge insets,可以实现按钮内容的上下左右间距,以满足不同布局需求。实战部分演示了如何创建一个具有特定间距的button,通过设置负值的UIEdgeInsetsMake属性实现内容上移。
5456

被折叠的 条评论
为什么被折叠?



