| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- //
 
- //  UIButton+ext.swift
 
- //  PQSpeed
 
- //
 
- //  Created by ak on 2020/8/14.
 
- //  Copyright © 2020 BytesFlow. All rights reserved.
 
- //
 
- /**
 
-  UIButton图像文字同时存在时---图像相对于文字的位置
 
-  - top:    图像在上
 
-  - left:   图像在左
 
-  - right:  图像在右
 
-  - bottom: 图像在下
 
-  */
 
- public enum PQButtonImageEdgeInsetsStyle {
 
-     case top, left, right, bottom
 
- }
 
- import Foundation
 
- public extension UIButton {
 
-     func imagePosition(at style: PQButtonImageEdgeInsetsStyle, space: CGFloat) {
 
-         guard let imageV = imageView else { return }
 
-         guard let titleL = titleLabel else { return }
 
-         // 获取图像的宽和高
 
-         let imageWidth = imageV.frame.size.width
 
-         let imageHeight = imageV.frame.size.height
 
-         // 获取文字的宽和高
 
-         let labelWidth = titleL.frame.size.width
 
-         let labelHeight = titleL.frame.size.height
 
-         var imageEdgeInsets = UIEdgeInsets.zero
 
-         var labelEdgeInsets = UIEdgeInsets.zero
 
-         // UIButton同时有图像和文字的正常状态---左图像右文字,间距为0
 
-         switch style {
 
-         case .left:
 
-             // 正常状态--只不过加了个间距
 
-             imageEdgeInsets = UIEdgeInsets(top: 0, left: -space * 0.5, bottom: 0, right: space * 0.5)
 
-             labelEdgeInsets = UIEdgeInsets(top: 0, left: space * 0.5, bottom: 0, right: -space * 0.5)
 
-         case .right:
 
-             // 切换位置--左文字右图像
 
-             // 图像:UIEdgeInsets的left是相对于UIButton的左边移动了labelWidth + space * 0.5,right相对于label的左边移动了-labelWidth - space * 0.5
 
-             imageEdgeInsets = UIEdgeInsets(top: 0, left: labelWidth + space * 0.5, bottom: 0, right: -labelWidth - space * 0.5)
 
-             labelEdgeInsets = UIEdgeInsets(top: 0, left: -imageWidth - space * 0.5, bottom: 0, right: imageWidth + space * 0.5)
 
-         case .top:
 
-             // 切换位置--上图像下文字
 
-             /** 图像的中心位置向右移动了labelWidth * 0.5,向上移动了-imageHeight * 0.5 - space * 0.5
 
-               *文字的中心位置向左移动了imageWidth * 0.5,向下移动了labelHeight*0.5+space*0.5
 
-              */
 
-             imageEdgeInsets = UIEdgeInsets(top: -(imageHeight * 0.5 - space), left: labelWidth * 0.5, bottom: imageHeight * 0.5 - space, right: -labelWidth * 0.5)
 
-             labelEdgeInsets = UIEdgeInsets(top: labelHeight * 0.5 + space * 2, left: -imageWidth * 0.5, bottom: -(labelHeight * 0.5 + space * 2), right: imageWidth * 0.5)
 
-         case .bottom:
 
-             // 切换位置--下图像上文字
 
-             /** 图像的中心位置向右移动了labelWidth * 0.5,向下移动了imageHeight * 0.5 + space * 0.5
 
-              *文字的中心位置向左移动了imageWidth * 0.5,向上移动了labelHeight*0.5+space*0.5
 
-              */
 
-             imageEdgeInsets = UIEdgeInsets(top: imageHeight * 0.5 + space * 0.5, left: labelWidth * 0.5, bottom: -imageHeight * 0.5 - space * 0.5, right: -labelWidth * 0.5)
 
-             labelEdgeInsets = UIEdgeInsets(top: -labelHeight * 0.5 - space * 0.5, left: -imageWidth * 0.5, bottom: labelHeight * 0.5 + space * 0.5, right: imageWidth * 0.5)
 
-         }
 
-         titleEdgeInsets = labelEdgeInsets
 
-         self.imageEdgeInsets = imageEdgeInsets
 
-     }
 
- }
 
 
  |