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 } }