Вращение 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;

Ответы

Ответ 1

Решением этого было установить свойство zPosition для всех моих слоев соответствующим образом. Спасибо, спасибо @Brad Larson, который предложил это решение в комментарии здесь. Похоже, что когда вы начинаете использовать CATransform3D, обычная иерархия представлений zindex, созданная addubview, выкидывается из окна.

Ответ 2

  layer.anchorPoint = CGPointMake(0.0, 0.0);

Ответ 3

Настройка anchorPoint на {0.0, 0.0} также работает (как уже указывал Лиам).

Здесь полный фрагмент кода для изменения 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 );