【发布时间】:2018-12-27 17:46:59
【问题描述】:
我正在尝试将CAShapeLayer 添加到视图中。但是当我将customView 添加到 ViewCONtroller 的视图中时,shapeLayer 没有出现。捕获层次结构表明该层甚至没有插入到视图中。代码如下:
override class var layerClass: AnyClass {
return CAShapeLayer.self
}
...
override func didMoveToSuperview() {
let diameter = min(self.frame.width, self.frame.height)
let path = UIBezierPath(arcCenter: self.center, radius: diameter/2, startAngle: 0, endAngle: CGFloat.pi*2, clockwise: true)
let sLayer = CAShapeLayer()
sLayer.frame = bounds
sLayer.path = path.cgPath
sLayer.fillMode = .backwards
sLayer.fillColor = UIColor.blue.cgColor//bubbleColor?.cgColor
layer.addSublayer(sLayer)
}
在 ViewController 中:
override func viewDidLoad() {
super.viewDidLoad()
let node = Node(frame: CGRect(origin: self.view.center, size: CGSize(width: 250, height: 250)))
self.view.addSubview(node)
...
}
我真的不明白发生了什么。请帮忙!
【问题讨论】:
-
出于好奇,你为什么设置
layerClass,然后添加CAShapeLayer。因此,您有两个完全不同的CAShapeLayer实例。这是你的意图吗?为什么要更改基数layerClass? -
我在尝试不使用它。然后在这里得到了参考。我只是添加它并错误地复制到这里。 ??????
-
好的。不用担心。如果您愿意,您可以使用
layerClass进行复制,但我们不会添加子层。这是一个或另一个。 -
是的,我明白了。感谢您从两个角度解决问题。
Constraints在这里发挥了至关重要的作用。
标签: ios uiview swift4 cashapelayer swift4.2