1.概念
在oc中為了增強(qiáng)已有類的功能秘狞,我們經(jīng)常使用分類叭莫。使用分類,我們可以在不破壞原有類的結(jié)構(gòu)的前提下烁试,對(duì)原有類進(jìn)行模塊化的擴(kuò)展雇初。
但是在swift中沒有分類這種寫法了。相對(duì)應(yīng)的是swift中只有擴(kuò)展(Extensions)减响。
下面是swift中擴(kuò)展(Extensions)的說明:
擴(kuò)展就是向一個(gè)已有的類靖诗、結(jié)構(gòu)體、枚舉類型或者協(xié)議類型添加新功能(functionality)支示。這包括在沒有權(quán)限獲取原始源代碼的情況下擴(kuò)展類型的能力(即逆向建模)刊橘。擴(kuò)展和 Objective-C 中的分類(categories)類似。(不過與 Objective-C 不同的是颂鸿,Swift 的擴(kuò)展沒有名字促绵。)
2.對(duì)UIView的擴(kuò)展
extension UIView {
// .x
public var x: CGFloat {
get {
return self.frame.origin.x
}
set {
var rect = self.frame
rect.origin.x = newValue
self.frame = rect
}
}
// .y
public var y: CGFloat {
get {
return self.frame.origin.y
}
set {
var rect = self.frame
rect.origin.y = newValue
self.frame = rect
}
}
// .maxX
public var maxX: CGFloat {
get {
return self.frame.maxX
}
}
// .maxY
public var maxY: CGFloat {
get {
return self.frame.maxY
}
}
// .centerX
public var centerX: CGFloat {
get {
return self.center.x
}
set {
self.center = CGPoint(x: newValue, y: self.center.y)
}
}
// .centerY
public var centerY: CGFloat {
get {
return self.center.y
}
set {
self.center = CGPoint(x: self.center.x, y: newValue)
}
}
// .width
public var width: CGFloat {
get {
return self.frame.size.width
}
set {
var rect = self.frame
rect.size.width = newValue
self.frame = rect
}
}
// .height
public var height: CGFloat {
get {
return self.frame.size.height
}
set {
var rect = self.frame
rect.size.height = newValue
self.frame = rect
}
}
}
使用
let label = UILabel()
label.x
label.width
label.centerX
3.對(duì)UIColor的擴(kuò)展
extension UIColor {
public func colorWithHex(rgb:Int, alpha: CGFloat) -> UIColor {
return UIColor(red: ((CGFloat)((rgb & 0xFF0000) >> 16))/255.0, green: ((CGFloat)((rgb & 0xFF00) >> 8))/255.0, blue: ((CGFloat)(rgb & 0xFF)) / 255.0, alpha: alpha)
}
// 紅色
class var Red: UIColor {
return UIColor(red: 252/255.0, green: 106/255.0, blue: 125/255.0, alpha: 1.0)
}
// 灰色背景顏色
class var Gray: UIColor {
return UIColor(red: 242/255.0, green: 243/255.0, blue: 248/255.0, alpha: 1.0)
}
}
使用
UIColor.clear.colorWithHex(rgb: 0x2588dd, alpha: 1.0)
UIColor.Red
UIColor.Gray