CATransform3D旋转导致图像的一半消失

时间:2011-02-19 06:01:56

标签: iphone quartz-graphics transform calayer catransform3d

我正在使用以下代码旋转图像,但是已经“旋转”出页面的图像的一半(沿着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;

3 个答案:

答案 0 :(得分:33)

解决方案是适当地设置我所有图层的zPosition属性。感谢@Brad Larson,他在评论here中提出了这个解决方案。看来,当你开始使用CATransform3D时,由addsubview建立的普通zindex视图层次结构将被抛出窗口。

答案 1 :(得分:5)

  layer.anchorPoint = CGPointMake(0.0, 0.0);

答案 2 :(得分: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 );