直奔主题
let size = CGSizeMake(100, 50)
如何将size扩大两倍? 你可能习惯这样写
let size = CGSizeMake(100, 50)
let size2 = CGSizeMake(width:2*size.width,height:2*size.height)
看起来代码没什么问题 可以正常运行 ~~
那么我们能否让size像普通数字一样使用数学运算符(+,-,*,/....)???
如果你尝试这样写:
let size = CGSizeMake(100, 50) * 2
将会出现编译错误 因为 * 运算符默认不支持该类型 那么我们是否可以重写 * 运算符 让它具备这种功能 ?答案是可以的 下面我们就为CGSize添加扩展方法 让CGSize具备数学运算能力
func *(l: CGSize,r: CGFloat)-> CGSize {
return CGSize(width: r*l.width, height: r*l.height)
}
func /( l : CGSize, r: CGSize) -> CGSize {
return CGSize(width:l.width/r.width,height: l.height/r.height)
}
func*(l: CGSize,r: CGSize)-> CGSize{
return CGSize(width: l.width*r.width, height: l.height*r.height)
}
func -( l : CGSize, r: CGSize) -> CGSize {
return CGSize(width:l.width-r.width,height: l.height- r.height)
}
func -( l : CGPoint, r: CGPoint) -> CGPoint {
return CGPoint(x: l.x - r.x, y: l.y - r.y)
}
extension CGSize {
var point: CGPoint {
return CGPoint(x: self.width, y: self.height) }
}
该如何使用呢?
沿用之前扩大2倍的需求
let size = CGSizeMake(100, 50)
let size2 = size * 2
甚至我们可以这样写
let size2 = size * size
是不是很酷?
上述代码并没有难懂之处 也不算高深
旨在提示大家 要善于利用Swift的特性 合理的设计代码
欢迎关注个人公众号:DevTipss
微信公众号:DevTipss本文完~
网友评论