如何在CATextLayer中旋转文本?

时间:2011-09-15 08:50:55

标签: objective-c catextlayer

我在CATextLayer中显示一些文字,但是它大到适合定义的矩形。我想让文本慢慢旋转,以便全部可以阅读。我不知道怎么做。我希望有一个相对简单的方法来做到这一点,如果没有,有人知道一个示例或教程的网址显示/教导如何做这样的事情。

    CATextLayer *label = [[CATextLayer alloc] init];
    NSRect labelRect;
    labelRect.origin.x = 20;
    labelRect.origin.y = -height / 3.5;
    labelRect.size.width = width - 40;
    labelRect.size.height = height;
    [label setFont:@"Helvetica-Bold"];
    [label setFontSize: fontSize];  
    [label setFrame:labelRect];
    [label setString:@"Some really long menu item that won't fit"];
    [label setAlignmentMode:kCAAlignmentLeft];
    [label setForegroundColor:whiteColor];

更新:我想我想要描述的是文本本身会旋转。就像html marquee标签一样。

1 个答案:

答案 0 :(得分:1)

这对我有用,它会帮助你试试这个....

CGFloat radians = atan2f(_userResizableView2.transform.b, _userResizableView2.transform.a);

CGFloat flip=((UITextView*)_userResizableView2.contentView).transform.a;
NSLog(@"Flip x: %f Y : %f",((UITextView*)_userResizableView2.contentView).transform.a,((UITextView*)_userResizableView2.contentView).transform.b);
CGFloat degrees = radians * (180 / M_PI);
NSLog(@"Degree :%f",degrees);
float radiansToRotate = DEGREES_TO_RADIANS( -degrees );
CATransform3D zRotation;
zRotation = CATransform3DMakeRotation(radiansToRotate,0, 0, 1.0);
titleLayer.transform = CATransform3DScale(zRotation,flip, 1, 1);