gpt4 book ai didi

ios - 快速覆盖 UIView 中的默认图层类型

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:38 27 4
gpt4 key购买 nike

我想在 swift 中子类化 UIView,并使用 CAShapeLayer 作为这个子类的图层类型——用 layerClass() 覆盖图层类型。

如何访问 CAShapeLayer 中但不在 CALayer 中的属性 - 例如下面示例中的路径。下面的代码无法编译,因为 path 不是 CALayer 的成员。

override class func layerClass() -> AnyClass {
return CAShapeLayer.self
}

override func awakeFromNib() {

var path: UIBezierPath = UIBezierPath.init(ovalInRect: CGRectMake(0, 0, 30, 10))

self.layer.path = path.CGPath
}

最佳答案

请注意,self.layer 总是在 UIView 中返回一个通用的 CALayer,因此您必须将其类型转换为您的特定类以确保它具有正确的类型。您可以执行以下操作以确保调用 CAShapeLayer 的路径而不是 CALayer 类类型。

   override class func layerClass() -> AnyClass {
return CAShapeLayer.self
}

override func awakeFromNib() {
guard let shapeLayer = self.layer as? CAShapeLayer else { return }

let path: UIBezierPath = UIBezierPath.init(ovalInRect: CGRectMake(0, 0, 30, 10))
shapeLayer.path = path.CGPath
}

关于ios - 快速覆盖 UIView 中的默认图层类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31598650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com