@IBDesignable ビューで形状の穴を描きたいです。このためには、ビュー階層の上にあるビューのサイズが必要です。このビューは、制約によってサイズを変更します。
フレームを取得するには?依存しているビューは後で描画されるため、これはまったく不可能でしょうか? でもフレームサイズだと早い段階で取り出せるかも?
<MainView>
| <View>
| | <ViewWithShape>
| <ViewWeDependOn>
シェイプは、layoutSubviews で描画されます。
override func layoutSubviews() {
super.layoutSubviews()
if !(holeLayer != nil) {
holeLayer = CAShapeLayer()
layer.mask = holeLayer
let rect = bounds // I need the frame HERE
let path = UIBezierPath(quadrantHoleInsideRect: rect)
holeLayer.path = path.CGPath
}
}