swift - Swift 4 - 创建具有 2 种背景颜色的 UIView
解决方案
结果
代码
import UIKit
@IBDesignable
public class AngleView: UIView {
@IBInspectable public var fillColor: UIColor = .blue { didSet { setNeedsLayout() } }
var points: [CGPoint] = [
.zero,
CGPoint(x: 1, y: 0),
CGPoint(x: 1, y: 0.4),
CGPoint(x: 0, y: 0.5)
] { didSet { setNeedsLayout() } }
private lazy var shapeLayer: CAShapeLayer = {
let _shapeLayer = CAShapeLayer()
self.layer.insertSublayer(_shapeLayer, at: 0)
return _shapeLayer
}()
override public func layoutSubviews() {
shapeLayer.fillColor = fillColor.cgColor
guard points.count > 2 else {
shapeLayer.path = nil
return
}
let path = UIBezierPath()
path.move(to: convert(relativePoint: points[0]))
for point in points.dropFirst() {
path.addLine(to: convert(relativePoint: point))
}
path.close()
shapeLayer.path = path.cgPath
}
private func convert(relativePoint point: CGPoint) -> CGPoint {
return CGPoint(x: point.x * bounds.width + bounds.origin.x, y: point.y * bounds.height + bounds.origin.y)
}
}
来源 刚刚修改了值:D
推荐阅读
- function - CLIPS 缺少模板的函数声明
- python - 在参数中使用推导
- javascript - 如何通过 url 为帖子输入 wordpress 标签
- ios - SwiftUI Circle 更改修剪属性移动圆形阴影
- javascript - 在任何字符串上使用 log() 方法,并将字符串打印到控制台
- python - 我正在尝试使用函数来创建使用类来验证输入的 GUI,但是输入没有通过类传递?
- swiftui - 显示警报后从 NavigationLink 返回
- swift - SwiftUI 托管控制器在关闭后仍然存在
- python-3.x - 我该如何解决这个错误??TypeError:'list' 对象在第 17 行不可调用
- pandas - 为什么 pandas max 函数不返回正确的最大日期?