实际开发过程中,我们经常遇到需要有图片在右侧,文字在左侧,或者图片在上侧。有人傻傻的就用一个imageView和Label来做,其实用Button就可以解决这个问题,但是呢需要设置一下将图片和Label交换位置 。这就是我要说的重点了,网上大部分人云亦云的,都是copy过来没有经过测试。本人以我开发多年的人格保证绝对有效。行了,话不多说,上代码!
调用方法 图片位置枚举 具体实现方法我深切的知道你们肯定希望可以复制粘贴,故而把主要的实现方法贴出来了
public enum ImagePositionType{
case left // 图片在左 只需要添加一点间距
case top // 图片在上
case right // 图片在右
case bottom // 图片在下
}
/// - Parameter Btn: 需要交换的按钮
/// - Parameter positionType: 图片放的位置
/// - Parameter space: 图片与文字的距离
class public func exchangeImgwithTitleLabel(Btn: UIButton,
positionType:ImagePositionType,
space:CGFloat=0) {
let title_w:CGFloat = Btn.titleLabel?.intrinsicContentSize.width ?? 0
let title_h:CGFloat = Btn.titleLabel?.intrinsicContentSize.height ?? 0
let image_w:CGFloat = Btn.imageView?.intrinsicContentSize.width ?? 0
let image_h:CGFloat = Btn.imageView?.intrinsicContentSize.height ?? 0
varimageEdgeInsets =UIEdgeInsets()
vartitleEdgeInsets =UIEdgeInsets()
//想往哪边走就哪边为负数,然后相对位置则取相反数
switchpositionType {
case.left:
titleEdgeInsets =UIEdgeInsets(top:0,
left: space,
bottom:0,
right: -space)
imageEdgeInsets =UIEdgeInsets(top:0,
left:0,
bottom:0,
right:0)
case.right:
titleEdgeInsets =UIEdgeInsets(top:0,
left: -(space+image_w),
bottom:0,
right: (space+image_w))
imageEdgeInsets =UIEdgeInsets(top:0,
left: title_w,
bottom:0,
right: -title_w)
case.top:
titleEdgeInsets =UIEdgeInsets(top:0,
left: -image_w,
bottom: -(image_h+space),
right:0)
imageEdgeInsets =UIEdgeInsets(top: -(title_h+space),
left:0,
bottom:0,
right: -title_w)
case.bottom:
titleEdgeInsets =UIEdgeInsets(top:0,
left: -image_w,
bottom: (image_h+space),
right:0)
imageEdgeInsets =UIEdgeInsets(top: (title_h+space),
left:0,
bottom:0,
right: -title_w)
}
Btn.imageEdgeInsets= imageEdgeInsets
Btn.titleEdgeInsets= titleEdgeInsets
}
好了以上就是我自己现在在用并且很好用的一个方法,供大家鉴阅。这里调用的地方是ToolObject是我自己写的一个工具类,里面放一些常用好用的方法,开发过程中方便实用
觉得有效的给个赞呗,当然有问题也可以一起来探讨
网友评论