今天看一个写一个swift的小demo竟然用到了 UIView 的 frame 扩展,查了一些资料,然后对比 OC 的写法,把 swift 的扩展 frame 分享给大家
import UIKit
extension UIView{
// 扩展 x 的 set get 方法
var x: CGFloat{
get{
return frame.origin.x
}
set(newX){
var tmpFrame: CGRect = frame
tmpFrame.origin.x = newX
frame = tmpFrame
}
}
// 扩展 y 的 set get 方法
var y: CGFloat{
get{
return frame.origin.y
}
set(newY){
var tmpFrame: CGRect = frame
tmpFrame.origin.y = newY
frame = tmpFrame
}
}
// 扩展 width 的 set get 方法
var width: CGFloat{
get{
return frame.size.width
}
set(newWidth){
var tmpFrameWidth: CGRect = frame
tmpFrameWidth.size.width = newWidth
frame = tmpFrameWidth
}
}
// 扩展 height 的 set get 方法
var height: CGFloat{
get{
return frame.size.height
}
set(newHeight){
var tmpFrameHeight: CGRect = frame
tmpFrameHeight.size.height = newHeight
frame = tmpFrameHeight
}
}
// 扩展 centerX 的 set get 方法
var centerX: CGFloat{
get{
return center.x
}
set(newCenterX){
center = CGPoint(x: newCenterX, y: center.y)
}
}
// 扩展 centerY 的 set get 方法
var centerY: CGFloat{
get{
return center.y
}
set(newCenterY){
center = CGPoint(x: center.x, y: newCenterY)
}
}
// 扩展 origin 的 set get 方法
var origin: CGPoint{
get{
return return CGPoint(x: x, y: y)
}
set(newOrigin){
x = newOrigin.x
y = newOrigin.y
}
}
// 扩展 size 的 set get 方法
var size: CGSize{
get{
return CGSize(width: width, height: height)
}
set(newSize){
width = newSize.width
height = newSize.height
}
}
// 扩展 left 的 set get 方法
var left: CGFloat{
get{
return x
}
set(newLeft){
x = newLeft
}
}
// 扩展 right 的 set get 方法
var right: CGFloat{
get{
return x + width
}
set(newNight){
x = newNight - width
}
}
// 扩展 top 的 set get 方法
var top: CGFloat{
get{
return y
}
set(newTop){
y = newTop
}
}
// 扩展 bottom 的 set get 方法
var bottom: CGFloat{
get{
return y + height
}
set(newBottom){
y = newBottom - height
}
}
}