Rotating a text layer to any angle with CATransform3DMakeRotation in a transaction goes fine, unless you stop rotating at 135 or 315 degrees clockwise from the vertical normal. In those two cases bounds.size.width and bounds.size.height appear to exchange values, so that the string gets clipped.

This has got me puzzled for days now, and wondering if it's a bug in CA.
Any comments greatly appreciated.


The setup is very simple.
A CALayer *rL, including:
rL.layoutManager = [CAConstraintLayoutManager layoutManager];

Add a sublayer to rL: CATextLayer *tL, with a:
tL.string = (NSString *)@"This is a long string";

Color the border of tL, so as to see what happens to tL when rotating.
Fix tL in the center of rL for an axis of rotation:
[tL addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX
relativeTo:@"superlayer" attribute:kCAConstraintMidX ]];
[tL addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidY
relativeTo:@"superlayer" attribute:kCAConstraintMidY ]];

Rotate tL:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:3.0f] forKey:kCATransactionAnimationDuration];
tL.transform = CATransform3DMakeRotation(phi, 0.0, 0.0, 1.0);
[CATransaction commit];

That goes well, except when stopping the rotation at
phi = M_PI_2 + M_PI_4 (135 degrees), or phi = M_PI + M_PI_2 + M_PI_4 (315 degrees, which is opposite 135 degrees).

Thanks.
Regards,
William
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to