[Swift] UIView+Extension


import UIKit

public extension UIView {
    /// 获取 控件高度
    func heightToFit() -> CGFloat {
        self.setNeedsLayout()
        self.layoutIfNeeded()
        return self.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
    }
    
    /// 圆角
    func maskRadius(radius: CGFloat, corners: UIRectCorner) {
        guard self.bounds != CGRect.zero else { return }
        
        let bezierPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        let shapeLayer = CAShapeLayer()
        shapeLayer.frame = self.bounds
        shapeLayer.path = bezierPath.cgPath
        self.layer.mask = shapeLayer
    }
    
    /// 边框 + 圆角
    func maskBorder(radius: CGFloat, corners: UIRectCorner, fillColor: UIColor, strokeColor: UIColor, borderWidth: CGFloat) {
        guard self.bounds != CGRect.zero else { return }
        
        let bezierPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        
        let shapeLayer = CAShapeLayer()
        shapeLayer.frame = self.bounds
        shapeLayer.path = bezierPath.cgPath
        self.layer.mask = shapeLayer
        
        let borderLayer = CAShapeLayer()
        borderLayer.frame = self.bounds
        borderLayer.path = bezierPath.cgPath
        borderLayer.lineWidth = borderWidth
        borderLayer.fillColor = fillColor.cgColor
        borderLayer.strokeColor = strokeColor.cgColor
        self.layer.addSublayer(borderLayer)
    }
    
    /// 渐变色
    func addGradientLayer(start: UIColor, end: UIColor) {
        let gradientLayer = CAGradientLayer()
        gradientLayer.startPoint = CGPoint(x: 0, y: 0)
        gradientLayer.endPoint = CGPoint(x: 0, y: 1)
        gradientLayer.locations = [0, 1]
        gradientLayer.colors = [start.cgColor, end.cgColor]
        self.layer.addSublayer(gradientLayer)
    }
    
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容