Swift - 自定义UIButton

import UIKit

class CustomBtn: UIButton {


    //MARK:- 重写init函数
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setImage(UIImage(named:"navigationbar_arrow_up"), for: .normal)
        setImage(UIImage(named:"navigationbar_arrow_down"), for: .selected)
        setTitleColor(UIColor.black, for: .normal)
        backgroundColor = UIColor.cyan
        
        
    }
    
    //swift中规定:重写控件的init(frame方法)或者init()方法.必须重写 init?(coder aDecoder: NSCoder)
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //titleLabel ,imageView中间的空隙宽度
        let spaceWid = CGFloat(5)
        //btn的宽度
        let btnWid = frame.size.width
        //titleLabel ,imageView的总宽度 加 空隙
        let wid = titleLabel!.frame.size.width + imageView!.frame.size.width + spaceWid
        
        titleLabel!.frame.origin.x = (btnWid-wid)*0.5
        imageView!.frame.origin.x = titleLabel!.frame.maxX + spaceWid
        
    }

}

在ViewController中调用

import UIKit

class ViewController: UIViewController {

    lazy var btn : CustomBtn = CustomBtn()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        setupUI()
        
    }

}


//MARK:- 创建UI
extension ViewController{
    
    func setupUI(){
        
        btn.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
        btn.setTitle("皮皮鳝", for: .normal)
        btn.center = view.center
        btn.addTarget(self, action: #selector(ViewController.btnClick(sender:)), for: .touchUpInside)
        view.addSubview(btn)
    }
}

//MARK:- 事件监听
extension ViewController{
    
    @objc fileprivate func btnClick(sender:UIButton) {
        sender.isSelected = !sender.isSelected
    }
    
}

效果图:


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

相关阅读更多精彩内容

友情链接更多精彩内容