前序
在实际开发中,经常会遇到UIImage+UILabel+点击事件的需求,比较挫的做法就是用UIButton+UIImage+UILabel三个控件组合使用。高级的用法就是使用UIButton一个控件,设置UIButton的Image和TitleLabel。
UIButton同时设置Image和Label时,默认情况是Image在左,Label在右。我们实际需要的效果是Image在上,Label在下,那么此时就需要了解并运用imageEdgeInsets和titleEdgeInsets。
API理解
关于imageEdgeInsets和titleEdgeInsets的详解网上已经有很多的文章:
iOS UIButton之UIEdgeInsets详解
封装与运用
关于imageEdgeInsets和titleEdgeInsets网络上有很多的例子,每次要用到的时候都要去进行一番查询(比较笨,老是记不住),所以自己进行了简单的封装。
扩展UIButton
通过扩展UIButton,提供一个实例方法,直接设置Image的方向,就可自动设置出对应的imageEdgeInsets和titleEdgeInsets。
例子
[self.testBtn setImageAndTitleDirection:FlexDirectionTypeImgRight offset:0];
FlexDirectionTypeImgTop
FlexDirectionTypeImgLeft
FlexDirectionTypeImgBottom
FlexDirectionTypeImgRight
代码地址
此为测试Demo,如果您想使用该封装文件,可将Demo中UIButton+flexDirection(.h、.m)文件copy至您的工程。
ButtonFlexDirection