Swift-Extensions

时间:2021-03-17 11:35:47

日常开发中,frame 是我们经常用到的,但是 UIKit 不允许我们直接设置 frame.origin.x frame.origin.y frame.size.wight frame.size.height。

我们只能通过下面几种方式设置frame:

1) 取出 frame 然后设置后 在设置回去

var customFrame = anyView.frame

customFrame.origin.x = 10.0

anyView.frame = customFrame

2) 新定义一个 然后整体赋值

let customFrame = CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0)

anyView.frame = customFrame

在Swift中我们可以实现现有类的 Extensions(在oc中使用 Category 来实现) 来实现 anyView.frame.x = 10.0 这样的代码,这样的话就不用整体设置,代码也简洁的多了。

既然是设置 frame ,那么我们需要扩展的类就是 UIView ,Swift 中在类的前面使用 extension 关键字标记是扩展类,代码如下:

extension UIView {
var x: CGFloat {
get {
return frame.origin.x
} set {
var tmpFrame = frame tmpFrame.origin.x = newValue frame = tmpFrame
}
} var y: CGFloat {
get {
return frame.origin.y
} set {
var tmpFrame = frame tmpFrame.origin.y = newValue frame = tmpFrame
}
} var height: CGFloat {
get {
return frame.size.height
} set {
var tmpFrame = frame tmpFrame.size.height = newValue frame = tmpFrame
}
} var width: CGFloat {
get {
return frame.size.width
} set {
var tmpFrame = frame tmpFrame.size.width = newValue frame = tmpFrame
}
}
}

看代码其实很简单,只是把一些需要的操作封装在扩展类中了。

相关文章