ios12 setTitleEdgeInsets 的问题2018
2018-10-19 本文已影响29人
iOS打怪升级
关于对UIButton 同时设置图片和文本的问题
目前发现的问题:在ios 12上,同时设置titleLabel 和imageView EdgeInsets 无效果,原因不知,记录
需要的效果:
实现的代码
NSInteger offsetX_img = CGRectGetMidX(itemBtn.bounds) - CGRectGetMidX(itemBtn.imageView.frame);
NSInteger offsetX_title = CGRectGetMidX(itemBtn.bounds) - CGRectGetMidX(itemBtn.titleLabel.frame);
[itemBtn setTitleEdgeInsets:UIEdgeInsetsMake(22, offsetX_title, -22, -offsetX_title)];
[itemBtn setImageEdgeInsets:UIEdgeInsetsMake(-15, offsetX_img, 15, -offsetX_img)];
说明:默认情况下的效果

需要知道的:imageView 和titleLabel 左右排列,EdgeInsets表示的相对于其默认位置向四个方向的偏移,不要误解成距离边的距离;关于上下 ,左右设置的时候要成对设置,否则会偏移效果减半,所以我理解这里的偏移是由一个维度上的两个值求和除二决定的(设想一下向上偏移10, 是不是上下都偏移10 ,所以设置的时候要成对设置)