2009-08-03 14 views
2

ユーザーが電話を回転して自動回転したように、自動サイズ変更マスクを使用して手動でビューを回転するにはどうすればよいですか?また、私はそれを瞬時に、アニメーションなしにしたい。なぜ私がこれを必要としているか知りたければ、他の質問をiPhone Dev - keeping interface rotationに見てください。iPhone dev - ビューを手動で回転する

ありがとうございます!

答えて

1

あなたがここでやりたいことは、あなたのビューを回転させるためにアフィン変換を使用することです。私は現時点で私のコードの前にはいけませんが、これを達成しました。あなたが単純なローテーションをすると、あなたのビューがカットされ、あなたが望むような中央ではなく、レイヤーのアンカーが設定されていることがわかります。あなたが望む場所にビューが現れるようにします。これに近づく方法は、90度のアフィン変換回転を行い、それがビューに与える影響を確認することです。こうすることで、アンカーが必要なレイヤーをどこから見つけることができるはずです。私は私のMacの前にいるときに、後でいくつかのサンプルコードを投稿してください。それは

+0

ビューとその内容を使用してビューを回転することはできますか?そして私はどのようにアフィン変換を行うのですか? – mk12

+0

いいえ、あなたは自分でサイズを変更する必要があります、彼らはここに何かを持っているリンゴサイトでアフィン変換を見てくださいhttp://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_affine/ dq_affine.html – Daniel

+0

私はあなたがautoreszingmasksについてあなたの質問を誤読したと思います – Daniel

1

を役に立てば幸い私はかなりあなたが

で意味を理解din't "... autoresizingMasksを使用して..."

を私はUIIViewアニメーションと同じことをやりました。そこには他にもたくさんのテクニックがあります。私はコードが説明を必要としません願っています//

-(void)rotateToLandscape 
{ 
UIWindow *win = [[UIApplication sharedApplication]keyWindow]; 
if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){ 
    [[[UIApplication sharedApplication] keyWindow] setBackgroundColor:[UIColor blackColor]]; 
    [UIView beginAnimations:@"View Flip" context:nil]; 
    [UIView setAnimationDuration:0.3]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    win.transform = CGAffineTransformIdentity; 
    win.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
    win.bounds = CGRectMake(0.0f, 0.0f, 480, 320); 
    win.center = CGPointMake(160.0f, 240.0f); 
    [UIView commitAnimations]; 
} 

}

: はここに私のコードです。
//アニメーション文を削除して、効果を得ることができます(アニメーション化されていません)。

関連する問題