场景需求:
普通状态:
![](https://img.haomeiwen.com/i1080281/c57c5291a4045370.png)
选中状态:
![](https://img.haomeiwen.com/i1080281/a93c8d9b4b8201f1.png)
普通状态我通过设置titleEdgeInsets使标题距离左边框20,代码如下:
CGSize buttonSize = [button.titleLabel.text sizeWithAttributes:@{NSFontAttributeName:button.titleLabel.font}];
button.titleEdgeInsets = UIEdgeInsetsMake(0, -(kScreenWidth -buttonSize.width) + 40, 0, 0);
经过仿佛测试比对,发现titleEdgeInsets和实际的frame存在2倍的关系。
按钮选中出现图片,并且标题位置不变,图片距离右边框30,代码如下:
CGSize buttonImageSize = [sender imageForState:UIControlStateSelected].size;
sender.titleEdgeInsets = UIEdgeInsetsMake(0, -(kScreenWidth -buttonSize.width) - buttonImageSize.width + 40, 0, 0);
sender.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -kScreenWidth-buttonSize.width + 60 );
经过仿佛测试比对,发现imageEdgeInsets和实际的frame存在2倍的关系。
以上是我发现的规律,但原理不明白,如果有高手,请多多指教。。
网友评论