Swift:CALayer+Extension

作者: IIronMan | 来源:发表于2020-11-09 10:51 被阅读0次

    JKSwiftExtension,测试用例在 CALayerExtensionViewController.swift 里面
    目录:
    1、自定义链式编程

    一、自定义链式编程

    public extension CALayer {
    
        // MARK: 1.1、设置圆角
        /// 设置圆角
        /// - Parameter cornerRadius: 圆角
        /// - Returns: 返回自身
        @discardableResult
        func corner(_ cornerRadius: CGFloat) -> Self {
            self.cornerRadius = cornerRadius
            masksToBounds = true
            return self
        }
    
        // MARK: 1.2、设置背景色
        /// 设置背景色
        /// - Parameter color: 背景色
        /// - Returns: 返回自身
        @discardableResult
        func backgroundColor(_ color: UIColor) -> Self {
            backgroundColor = color.cgColor
            return self
        }
    
        // MARK: 1.3、设置背景色 (十六进制字符串)
        /// 设置背景色 (十六进制字符串)
        /// - Parameter hex: 背景色 (十六进制字符串)
        /// - Returns: 返回自身
        @discardableResult
        func backgroundColor(_ hex: String) -> Self {
            backgroundColor = UIColor.hexStringColor(hexString: hex).cgColor
            return self
        }
    
        // MARK: 1.4、设置frame
        /// 设置frame
        /// - Parameter frame: frame
        /// - Returns: 返回自身
        @discardableResult
        func frame(_ frame: CGRect) -> Self {
            self.frame = frame
            return self
        }
    
        // MARK: 1.5、添加到父视图(UIView)
        /// 添加到父视图
        /// - Parameter superView: 父视图(UIView)
        /// - Returns: 返回自身
        @discardableResult
        func addTo(_ superView: UIView) -> Self {
            superView.layer.addSublayer(self)
            return self
        }
    
        // MARK: 1.6、添加到父视图(CALayer)
        /// 添加到父视图(CALayer)
        /// - Parameter superLayer: 父视图(CALayer)
        /// - Returns: 返回自身
        @discardableResult
        func addTo(_ superLayer: CALayer) -> Self {
            superLayer.addSublayer(self)
            return self
        }
    
        // MARK: 1.7、是否隐藏
        /// 是否隐藏
        /// - Parameter isHidden: 是否隐藏
        /// - Returns: 返回自身
        @discardableResult
        func isHidden(_ isHidden: Bool) -> Self {
            self.isHidden = isHidden
            return self
        }
    
        // MARK: 1.8、设置边框宽度
        /// 设置边框宽度
        /// - Parameter width: 边框宽度
        /// - Returns: 返回自身
        @discardableResult
        func borderWidth(_ width: CGFloat) -> Self {
            self.borderWidth = width
            return self
        }
    
        // MARK: 1.9、设置边框颜色
        /// 设置边框颜色
        /// - Parameter color: 边框颜色
        /// - Returns: 返回自身
        @discardableResult
        func borderColor(_ color: UIColor) -> Self {
            self.borderColor = color.cgColor
            return self
        }
    
        // MARK: 1.10、是否开启光栅化
        /// 是否开启光栅化
        /// - Parameter rasterize: 是否开启光栅化
        /// - Returns: 返回自身
        @discardableResult
        func shouldRasterize(_ rasterize: Bool) -> Self {
            self.shouldRasterize = rasterize
            return self
        }
    
        // MARK: 1.11、设置光栅化比例
        /// 设置光栅化比例
        /// - Parameter scale: 光栅化比例
        /// - Returns: 返回自身
        @discardableResult
        func rasterizationScale(_ scale: CGFloat) -> Self {
            self.rasterizationScale = scale
            self.shouldRasterize = true
            return self
        }
    
        // MARK: 1.12、设置阴影颜色
        /// 设置阴影颜色
        /// - Parameter color: 阴影颜色
        /// - Returns: 返回自身
        @discardableResult
        func shadowColor(_ color: UIColor) -> Self {
            self.shadowColor = color.cgColor
            return self
        }
    
        // MARK: 1.13、设置阴影的透明度,取值范围:0~1
        /// 设置阴影的透明度,取值范围:0~1
        /// - Parameter opacity: 阴影的透明度
        /// - Returns: 返回自身
        @discardableResult
        func shadowOpacity(_ opacity: Float) -> Self {
            self.shadowOpacity = opacity
            return self
        }
    
        // MARK: 1.14、设置阴影的偏移量
        /// 设置阴影的偏移量
        /// - Parameter offset: 偏移量
        /// - Returns: 返回自身
        @discardableResult
        func shadowOffset(_ offset: CGSize) -> Self {
            self.shadowOffset = offset
            return self
        }
    
        // MARK: 1.15、设置阴影圆角
        /// 设置阴影圆角
        /// - Parameter radius: 圆角大小
        /// - Returns: 返回自身
        @discardableResult
        func shadowRadius(_ radius: CGFloat) -> Self {
            self.shadowRadius = radius
            return self
        }
    
        // MARK: 1.16、高性能添加阴影路径 Shadow Path,提示:当用bounds设置path时,看起来的效果与只设置了shadowOpacity一样,但是添加了shadowPath后消除了离屏渲染问题
        /// 高性能添加阴影 Shadow Path
        /// - Parameter path: 阴影Path
        /// - Returns: 返回自身
        @discardableResult
        func shadowPath(_ path: CGPath) -> Self {
            self.shadowPath = path
            return self
        }
    }
    

    相关文章

      网友评论

        本文标题:Swift:CALayer+Extension

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