1.創(chuàng)建一個(gè)擴(kuò)展
command + N 創(chuàng)建一個(gè)文件,然后選擇Swift File惑芭,點(diǎn)擊Next坠狡,然后起個(gè)見(jiàn)名知意的名(一般都是起類名+Extension),創(chuàng)建遂跟。
2. 類方法創(chuàng)建Button
//
// UIButton-Extension.swift
// SwiftSHWB
//
// Created by HarrySun on 2017/8/2.
// Copyright ? 2017年 Mobby. All rights reserved.
//
import UIKit
// 給UIButton加一個(gè)擴(kuò)展
extension UIButton{
// swift中類方法是以class開(kāi)頭的方法逃沿,類似于OC中+開(kāi)頭的方法
class func createButton(imageName:String,bgImageName:String) -> UIButton{
// 1.創(chuàng)建Btn
let btn = UIButton()
// 2.設(shè)置btn屬性
btn.setImage(UIImage(named:imageName), for: .normal)
btn.setImage(UIImage(named:imageName + "_highlighted"), for: .highlighted)
btn.setBackgroundImage(UIImage(named:bgImageName), for: .normal)
btn.setBackgroundImage(UIImage(named:bgImageName + "_highlighted"), for: .highlighted)
btn.sizeToFit()
return btn
}
}
使用
lazy var composeBtn:UIButton = UIButton.createButton(imageName: "tabbar_compose_icon_add", bgImageName: "tabbar_compose_button")
3.構(gòu)造函數(shù)創(chuàng)建Button
相關(guān)知識(shí)--便利構(gòu)造函數(shù)的特點(diǎn):
1.便利構(gòu)造函數(shù)通常都是卸載extension里面
2.便利構(gòu)造函數(shù)init前面需要加載convenience
3.在便利構(gòu)造函數(shù)中需要明確的調(diào)用self.init()
//
// UIButton-Extension.swift
// SwiftSHWB
//
// Created by HarrySun on 2017/8/2.
// Copyright ? 2017年 Mobby. All rights reserved.
//
import UIKit
// 給UIButton加一個(gè)擴(kuò)展
// 構(gòu)造函數(shù)(構(gòu)造函數(shù)是不需要寫(xiě)返回值的,系統(tǒng)會(huì)自動(dòng)返回的)
// convenience:便利幻锁,使用convenience修飾的構(gòu)造函數(shù)叫做便利構(gòu)造函數(shù)
// 便利構(gòu)造函數(shù)通常用在對(duì)系統(tǒng)的類進(jìn)行構(gòu)造函數(shù)的擴(kuò)充時(shí)使用
extension UIButton{
convenience init(imageName:String,bgImageName:String){
self.init()
setImage(UIImage(named:imageName), for: .normal)
setImage(UIImage(named:imageName + "_highlighted"), for: .highlighted)
setBackgroundImage(UIImage(named:bgImageName), for: .normal)
setBackgroundImage(UIImage(named:bgImageName + "_highlighted"), for: .highlighted)
sizeToFit()
}
}
使用
lazy var composeBtn:UIButton = UIButton(imageName: "tabbar_compose_icon_add", bgImageName: "tabbar_compose_button")