Rotating a CATextLayer
Rotating a CATextLayer
- Subject: Rotating a CATextLayer
- From: william van braam <email@hidden>
- Date: Tue, 13 May 2008 18:53:33 +0200
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 (email@hidden)
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:
This email sent to email@hidden