美文网首页
Swift - UIView+Category

Swift - UIView+Category

作者: Simple_Code | 来源:发表于2017-07-31 13:26 被阅读16次

    来源:http://www.jianshu.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)
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Swift - UIView+Category

          本文链接:https://www.haomeiwen.com/subject/dktrlxtx.html