swift新手进阶30天一 自定义上图片下文字的UIButton的几种方式

这篇博客介绍了三种在Swift中实现自定义UIButton,让图片和文字上下排列的方法:1) 利用NSAttributedString;2) 修改titleRectForContentRect和imageRectForContentRect方法;3) 调整EdgeInset属性。详细步骤包括复写方法、计算布局和应用到控件上。
摘要由CSDN通过智能技术生成
目前很多app首页功能区都类似工具栏上图标加下文字的方式来自定义按钮。当然,我们也可以用两个控件实现,但是,提升不了我们的逼格。接下来就介绍几种自定义这种上图标下文字的按钮的几种方式。先上图。
![首页自定义按钮.png](https://img-blog.csdn.net/20170629213116116?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTExMzc2MTE4MjQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

一、利用属性文本NSAttributedString来生成图片文本上下排列的按钮

1.复写NSAttributedString方法
// MARK: -使用图像和文本生成上下排列的属性文本
extension NSAttributedString {

    //将图片属性以及文字属性用方法名传入
    class func imageTextInit(image: UIImage, imageW: CGFloat, imageH: CGFloat, labelTitle: String, fontSize: CGFloat, titleColor: UIColor, labelSpacing: CGFloat) -> NSAttributedString{

        //1.将图片转换成属性文本
        let attachment = NSTextAttachment()
        attachment.image = image
        attachment.bounds = CGRectMake(0, 0, imageW, imageH)
        let imageText = NSAttributedString(attachment: attachment)

        //2.将标题转化为属性文本
        let titleDict = [NSFontAttributeName: UIFont.systemFontOfSize(fontSize), NSForegroundColorAttributeName: titleColor]
        let text = NSAttributedString(string: labelTitle, attributes: titleDict)

        //3.换行文本可以让label长度不够时自动换行
        let spaceDict = [NSFontAttributeName:UIFont.systemFontOfSize(labelSpacing)]
        let lineText = NSAttributedString(string: "\n\n", attributes: spaceDict)


        //4.合并属性文字
        let mutableAttr = NSMutableAttributedString(attributedString: imageText)
        mutableAttr.appendAttributedString(lineText)
        mutableAttr.appendAttributedString(text)

        //5.将属性文本返回
        return mutab
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值