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 view 内から依存するビューへの出口だったので、私はこの質問をしました。

これにより、最初はクラッシュしましたが、現在は期待どおりに機能しています。

于 2015-09-02T12:42:08.783 に答える