來源:http://www.lxweimin.com/p/619c90f0d755
import UIKit
enum Direction {
case top
case left
case bottom
case right
}
extension UIView {
/// 尺寸
var size: CGSize {
get {
return self.frame.size
}
set(newValue) {
self.frame.size = CGSize(width: newValue.width, height: newValue.height)
}
}
/// 寬度
var width: CGFloat {
get {
return self.frame.size.width
}
set(newValue) {
self.frame.size.width = newValue
}
}
/// 高度
var height: CGFloat {
get {
return self.frame.size.height
}
set(newValue) {
self.frame.size.height = newValue
}
}
/// 橫坐標
var x: CGFloat {
get {
return self.frame.minX
}
set(newValue) {
self.frame = CGRect(x: newValue, y: y, width: width, height: height)
}
}
/// 縱坐標
var y: CGFloat {
get {
return self.frame.minY
}
set(newValue) {
self.frame = CGRect(x: x, y: newValue, width: width, height: height)
}
}
/// 右端橫坐標
var right: CGFloat {
get {
return frame.origin.x + frame.size.width
}
set(newValue) {
frame.origin.x = newValue - frame.size.width
}
}
/// 底端縱坐標
var bottom: CGFloat {
get {
return frame.origin.y + frame.size.height
}
set(newValue) {
frame.origin.y = newValue - frame.size.height
}
}
/// 中心橫坐標
var centerX: CGFloat {
get {
return self.center.x
}
set(newValue) {
center.x = newValue
}
}
/// 中心縱坐標
var centerY: CGFloat {
get {
return center.y
}
set(newValue) {
center.y = newValue
}
}
/// 原點
var origin: CGPoint {
get {
return self.origin
}
set(newValue) {
frame.origin = newValue
}
}
/// 右上角坐標
var topRight: CGPoint {
get {
return CGPoint(x: frame.origin.x + frame.size.width, y: frame.origin.y)
}
set(newValue) {
frame.origin = CGPoint(x: newValue.x - width, y: newValue.y)
}
}
/// 右下角坐標
var bottomRight: CGPoint {
get {
return CGPoint(x: frame.origin.x + frame.size.width, y: frame.origin.y + frame.size.height)
}
set(newValue) {
frame.origin = CGPoint(x: newValue.x - width, y: newValue.y - height)
}
}
/// 左下角坐標
var bottomLeft: CGPoint {
get {
return CGPoint(x: frame.origin.x, y: frame.origin.y + frame.size.height)
}
set(newValue) {
frame.origin = CGPoint(x: newValue.x, y: newValue.y - height)
}
}
/// 獲取UIView對象某個方向縮進指定距離后的方形區域
///
/// - Parameters:
/// - direction: 要縮進的方向
/// - distance: 縮進的距離
/// - Returns: 得到的區域
func cutRect(direction: Direction, distance: CGFloat) -> CGRect {
switch direction {
case .top:
return CGRect(x: 0, y: distance, width: self.width, height: self.height - distance)
case .left:
return CGRect(x: distance, y: 0, width: self.width - distance, height: self.height)
case .right:
return CGRect(x: 0, y: 0, width: self.width - distance, height: self.height)
case .bottom:
return CGRect(x: 0, y: 0, width: self.width, height: self.height - distance)
}
}
}