7

2 つの変換を適用した200x200 pixel CALayerインスタンスがあります。

  • 50%に縮小
  • 3D パースペクティブを適用

次に、変換されたレイヤーを別のレイヤーに揃えたいと思います。そのためには、変換されたレイヤーのサイズ (幅と高さ) が必要です。

問題は、レイヤーに対してlayer.boundsまだ返さ200x200れることですが、透視変換のため、実際に表示される幅は よりも小さく、高さは よりも大きくなり200ます。ちなみに、プレゼンテーション層の境界は を返し0ます。

CALayer変換されたものの正確なサイズを、画面上に描画されているとおりに正確に判断する方法はありますか?

4

1 に答える 1

11

Finally figured it out: the bounds remain unchanged when applying a transformation, but what changes is the layer's frame property.

Solution is to use layer.frame.size instead of layer.bounds.size.

This is mentioned in the Core Animation Programming Guide:

Layers have an implicit frame that is a function of the position, bounds, anchorPoint, and transform properties.

于 2011-04-05T06:54:12.233 に答える