2

ユーザーが電話を回転させて自動回転したかのように、autoresizingMasks を使用して手動でビューを回転させるにはどうすればよいですか。また、アニメーションではなく、インスタントにしたいです。なぜこれが必要なのか知りたいのですが、iPhone Dev - keep interface rotationでの私の他の質問を見てください。

ありがとう!!

4

2 に答える 2

1

私はあなたが何を意味するのかよくわかりません

「... 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];
}   

}

// コードに説明が必要ないことを願っています。
//アニメーションステートメントを削除して、必要な効果を得ることができます(アニメーション化されていません)。

于 2012-04-27T07:41:46.593 に答える
1

ここでやりたいことは、アフィン変換を使用してビューを回転させることです。現時点ではコードを目の前に持っていませんが、これを達成しました。単純な回転を行うと、ビューが切り取られ、希望どおりに中央に配置されないことがわかります。ここで行う必要があるのは、レイヤーのアンカーを設定することです (必要なものが得られるまで値をいじってみてください)。ビューが必要な場所に表示されるようにします。これにアプローチする方法は、90 度のアフィン変換回転を行い、それがビューに及ぼす影響を確認することです。このようにして、レイヤーアンカーが必要な場所を把握できるはずです。後で Mac の前にいるときに、サンプル コードをここに投稿します。それが役に立てば幸い

于 2009-08-03T13:28:44.907 に答える