工作中我們常常碰到這樣的點擊按鈕颅停,實現(xiàn)方法有很多種,今天給大家介紹下我這邊使用UIButton titleEdgeInsets和imageEdgeInsets的實現(xiàn)方案富弦。
![](https://upload-images.jianshu.io/upload_images/4655238-84d7fe87622081f7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
直接上代碼雾袱,方法調(diào)用前先設(shè)置圖片和文字
@objcfuncchangeImageTitleLocation(type: ChangeButtonImageLocationType,distance:? CGFloat)? {
? ? ? ? layoutIfNeeded()
? ? ? ? letbtnWidth =frame.width
? ? ? ? letbtnHeight =frame.height
? ? ? ? letimageFrame =imageRect(forContentRect:CGRect(x:0,y:0,width:? btnWidth,height: btnHeight))
? ? ? ? lettitleFrame =titleRect(forContentRect:CGRect(x:0,y:0,width: btnWidth,height: btnHeight))
? ? ? ? iftype == .top|| type == .bottom{
? ? ? ? ? ? lettitleDistance =? (btnWidth-titleFrame.width)/2- titleFrame.origin.x
? ? ? ? ? ? letimageDistance = (btnWidth-imageFrame.width)/2- imageFrame.origin.x
? ? ? ? ? ? iftype == .top{
? ? ? ? ? ? ? ? lettitleHDistance =? (btnHeight + imageFrame.size.height- titleFrame.size.height+ distance)/2- titleFrame.origin.y
? ? ? ? ? ? ? ? letimageHDistance = (btnHeight - imageFrame.size.height- titleFrame.size.height- distance)/2- imageFrame.origin.y
? ? ? ? ? ? ? ? titleEdgeInsets=UIEdgeInsets(top: titleHDistance,left: titleDistance,bottom: -titleHDistance,right: -titleDistance)
? ? ? ? ? ? ? ? imageEdgeInsets=UIEdgeInsets(top: imageHDistance,left: imageDistance,bottom: -imageHDistance,right: -imageDistance)
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? lettitleHDistance =? (btnHeight - imageFrame.size.height- titleFrame.size.height- distance)/2- titleFrame.origin.y
? ? ? ? ? ? ? ? letimageHDistance = (btnHeight - imageFrame.size.height+ titleFrame.size.height+ distance)/2- imageFrame.origin.y
? ? ? ? ? ? ? ? titleEdgeInsets=UIEdgeInsets(top: titleHDistance,left: titleDistance,bottom: -titleHDistance,right: -titleDistance)
? ? ? ? ? ? ? ? imageEdgeInsets=UIEdgeInsets(top: imageHDistance,left: imageDistance,bottom: -imageHDistance,right: -imageDistance)
? ? ? ? ? ? }
? ? ? ? }elseiftype == .right{
? ? ? ? ? ? lettitleDistance =? (btnWidth-titleFrame.width-imageFrame.width-distance)/2- titleFrame.origin.x
? ? ? ? ? ? letimageDistance =? (btnWidth+titleFrame.width-imageFrame.width+distance)/2- imageFrame.origin.x
? ? ? ? ? ? titleEdgeInsets=UIEdgeInsets(top:0,left: titleDistance,bottom:0,right: -titleDistance)
? ? ? ? ? ? imageEdgeInsets=UIEdgeInsets(top:0,left: imageDistance,bottom:0,right: -imageDistance)
? ? ? ? }else{
? ? ? ? ? ? lettitleDistance =? (btnWidth-titleFrame.width+imageFrame.width+distance)/2- titleFrame.origin.x
? ? ? ? ? ? letimageDistance =? (btnWidth-titleFrame.width-imageFrame.width-distance)/2- imageFrame.origin.x
? ? ? ? ? ? titleEdgeInsets=UIEdgeInsets(top:0,left: titleDistance,bottom:0,right: -titleDistance)
? ? ? ? ? ? imageEdgeInsets=UIEdgeInsets(top:0,left: imageDistance,bottom:0,right: -imageDistance)
? ? ? ? }
? ? }