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)
}
}
[Swift] UIView+Extension
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- JKSwiftExtension[https://github.com/JoanKing/JKSwiftExten...
- 在日常代码中,我们常常要重复用到view的一些属性,比如view.center.x、view.frame.orig...
- 在OC中我们通过类目Category做UIView属性宽展,方便我们获取常用属性,(x、y、宽、高等)在Swift...
- 前言: 我们在开发工作中很有可能遇到需要view相应各种手势的需求,使用RunTime+Extension的形式为...