UIButton图片位置设置

作为一名已经100天的ios小菜, 我也决定开始学习写点东西了。刚刚需要设置UIbuttom的图片位置,stackoverflow了一番,找到了这个:ios - iPhone UIButton - image position - Stack Overflow

里面投票最高的是

button.titleEdgeInsets = UIEdgeInsetsMake(0, -button.imageView.frame.size.width, 0, button.imageView.frame.size.width);

button.imageEdgeInsets = UIEdgeInsetsMake(0, button.titleLabel.frame.size.width, 0, -button.titleLabel.frame.size.width);


我更希望能直接在storyboard中直接设置图片上下左右的位置,于是乎来吧,扩展UIButton, 利用kvc 直接设置:

```

extension UIButton {

func setImageUp(state:Bool){

     if(self.imageView == nil || self.titleLabel == nil || state == false){ return }

        self.sizeToFit()

        let titleXOffset = self.imageView!.frame.width/2

        let titleYOffset = self.imageView!.frame.height/2

        self.titleEdgeInsets = UIEdgeInsetsMake(titleYOffset, -titleXOffset, -titleYOffset, titleXOffset)

        let imageXoffset = self.titleLabel!.frame.width/2

        let imageYoffset = self.titleLabel!.frame.height/2

        self.imageEdgeInsets = UIEdgeInsetsMake(-imageYoffset, imageXoffset, imageYoffset, -imageXoffset)

}

func setImageBottom(state:Bool){

    if(self.imageView == nil || self.titleLabel == nil || state == false){ return }

       self.sizeToFit()

        let titleXOffset = self.imageView!.frame.width/2

        let titleYOffset = self.imageView!.frame.height/2

        self.titleEdgeInsets = UIEdgeInsetsMake(-titleYOffset, -titleXOffset, titleYOffset, titleXOffset)

        let imageXoffset = self.titleLabel!.frame.width/2

        let imageYoffset = self.titleLabel!.frame.height/2

        self.imageEdgeInsets = UIEdgeInsetsMake(imageYoffset, imageXoffset, -imageYoffset, -imageXoffset)

}

func setImageRight(state:Bool){

    if(self.imageView == nil || self.titleLabel == nil || state == false){ return }

    self.sizeToFit()

    self.titleEdgeInsets = UIEdgeInsetsMake(0, -self.imageView!.frame.size.width, 0, self.imageView!.frame.size.width)

    self.imageEdgeInsets = UIEdgeInsetsMake(0, self.titleLabel!.frame.size.width, 0, -self.titleLabel!.frame.size.width)

}

}



ok,现在直接在storyboard中的user defined runtime attributes中设置就行了

结果


有不对的地方,欢迎大神指正。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容