2011-09-15 14 views
1

私はCATextLayerにいくつかのテキストを表示していますが、そのサイズは定義された矩形に収まるように大きくなっています。私はテキストをゆっくりと回転させて、すべて読むことができるようにしたいと思います。私はそれをどうやって行うのか分かりません。私は、これを行う比較的簡単な方法があることを望んでいます。もしそうでなければ、そのようなことを行う方法や教え方を教えるチュートリアルやチュートリアルのURLを誰かが知っています。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マーキータグのようなものです

+2

....あなたはこれを試すのに役立ちます私のために働きました。 '@property CATransform3D transform; 'を使用してください。 – beryllium

+0

@beryllium - ラベルを変換したくないのに、ラベル内のテキストをゆっくり回転/アニメーションして、すべてのテキストを読むことができるようにします。変換プロパティの私の理解は、私が物事を誤解していない限り、レイヤー全体を変換することです。 – Justin808

+0

@berylliumへのあなたの返事から、CATextLayerにあなたが変換したくないサブレイヤがあると思いますか?そうであれば、sublayerTransformに逆変換を適用した場合、彼の提案はうまくいくでしょう。 – aLevelOfIndirection

答えて

1

これはそれだけでCATextLayerを回転させる

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); 
+0

ありがとうございました。これは機能します。 –

関連する問題