0

CALayersでしばらく問題が発生しています。UIImageViewに追加するレイヤーを作成します。このレイヤーを、別のビューと同じ位置に、あたかもそれのコピーであるかのように配置したいと思います。ただし、レイヤーがUIImageViewに追加されると、NSLogでの座標は「コピーされた」ビューと同じになりますが、レイヤーの位置が同じになることはありません。試してみるたびに、何か違うものが表示されます。私は何かが欠けているはずです。

    CALayer*layer=[CALayer layer];
        layer.bounds =copiedImageView.bounds;
        layer.contents=copiedImageView.layer.contents;


       CGPoint theCenter=[targetImageView convertPoint:copiedImageView.center fromView:self.view];            
       [layer setPosition:theCenter];    

        [targetImageView.layer addSublayer:layer];
        copiedImageView.layer.hidden=YES;

layer.positionを明示的に設定すると、機能しているように見えます(たとえば、(0,0)の場合、レイヤーの中心は常にtargetImageViewの左上隅にあります)。これは論理的です。

どんな助けでも大歓迎です!

4

1 に答える 1

1

境界ではなく、フレームを設定します。フレームは、レイヤーがその親レイヤーに対してどのように配置されるかを決定します。

layer.frame =copiedImageView.frame;

変換を適用していない限り。次に、境界と位置を別々に設定することにより、ほぼ正しい方法でそれを実行します。

于 2011-10-10T08:15:28.773 に答える