0

我想在@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
      }
   }
4

1 回答 1

0

我提出了这个问题,因为我的第一个明显的解决方案从 @IBDesignable 视图中访问依赖视图

起初这让我崩溃了,但它现在按预期工作。

于 2015-09-02T12:42:08.783 回答