Search code examples
iphoneuser-interfacecore-animationrotation

iphone Animation: why does rotating a UILabel around X axis cut off its bottom half?


I want to rotate a UILabel around the X axis, and animating it. But when the animation starts, the text of the label is cut in two, horizontally. The bottom half disappears, the upper half is rotating. Why?

Here's the code:

CATransform3D _3Dt = CATransform3DMakeRotation(radians(90.0f), 1.0, 0.0, 0.0);

CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];

transformAnimation.removedOnCompletion = NO;

transformAnimation.toValue = [NSValue valueWithCATransform3D:_3Dt];

transformAnimation.fillMode = kCAFillModeForwards;

(sdk 3.0)


Solution

  • X axis? That means during the rotation half of the UILabel will have z > 0 (in front of the screen) and half will have z < 0 (behind the screen).

    If there's other layers at z == 0 they will cover your UILabel's z < 0 half.

    Try to increase your label's layer's zPosition.