20

次のコードを使用して画像を回転させていますが、ページの「外側」に回転した画像の半分 (y 軸の下) が消えます。直し方?headingはラジアンです。

    CALayer *layer = myUIImageView.layer;
    CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
    rotationAndPerspectiveTransform.m34 = 1.0 / 500;
    rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, heading, 0.0f, 1.0f, 0.0f);
    layer.transform = rotationAndPerspectiveTransform;
4

3 に答える 3

33

これに対する解決策はzPosition、すべてのレイヤーのプロパティを適切に設定することでした。ここのコメントでこのソリューションを提案した @Brad Larson に感謝します。の使用を開始するCATransform3Dと、 addsubview によって確立された通常の zindex ビュー階層がウィンドウから放り出されるようです。

于 2011-02-21T00:22:34.783 に答える
5
  layer.anchorPoint = CGPointMake(0.0, 0.0);
于 2011-05-20T22:57:36.317 に答える
0

を に設定するanchorPointこと{0.0, 0.0}もできます (Liam が既に指摘しているように)。

anchorPoint画面上のレイヤーの位置を変更せずに を変更するための完全なコード スニペットを次に示します。

     layer.anchorPoint = CGPointMake( 0.0, 0.0 );

     CGPoint position = layer.position;
     CGSize size = layer.bounds.size;

     CGFloat posX = position.x - size.width / 2.0;
     CGFloat posY = position.y - size.height / 2.0;

     layer.position = CGPointMake( posX, posY );
于 2012-07-24T08:55:10.063 に答える