UIButton图片与文字的位置以及设置之间间距方法

2020-05-13  本文已影响0人  pentakill

实际开发过程中,我们经常遇到需要有图片在右侧,文字在左侧,或者图片在上侧。有人傻傻的就用一个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是我自己写的一个工具类,里面放一些常用好用的方法,开发过程中方便实用

觉得有效的给个赞呗,当然有问题也可以一起来探讨

上一篇下一篇

猜你喜欢

热点阅读