2011-11-16 6 views
0

私はCALayersの階層を持つUIViewを持っています。CALayersからUIViewのサイズを変更するには?

イメージを使用してレイヤーを作成していますので、レイヤーの作成が完了するまでUIViewの最終サイズはわかりません。

どのようにすべてのレイヤーに触れることができる最終的なUIViewサイズを見つけることができますか?

レイヤーが長方形で回転しているため、レイヤーがさらにはみ出すこともあります。そのアフィン変換のために、私はレイヤのフレームサイズを使用することができません。

UIViewを画面のサイズにするソリューションがあります。このUIViewにすべてのCALayersを追加できますが、これらのレイヤー階層がいくつか用意されていますが、これは別のUIView私はUIViewジェスチャーを使って翻訳/拡大/回転を行うことができます。

答えて

1

これにはCGMutablePathRefを使用できます。そしてview.layer.sublayers内のすべてのCALayer -sをループ:

CGPathAddRect(path, 
       &transform, 
       CGRectOffset(i.bounds, 
          -CGRectGetMidX(i.bounds), 
          -CGRectGetMidY(i.bounds))); 

は、矩形がCGPointZeroで、その中心を持つようにオフセットされます。 transformは、レイヤ(またはスケール)の回転とレイヤの位置への平行移動です。すなわち:最後に

CGAffineTransform transform = 
    CGAffineTransformConcat(CATransform3DGetAffineTransform(i.transform), 
          CGAffineTransformMakeTranslation(i.position.x, 
                  i.position.y)); 

view.bounds = CGPathGetBoundingBox(path); 

境界は現在、最小限のものであり、全ての層を囲んでください。

+0

ありがとうございます。 – Caroline

関連する問題