2

如何使用 autoresizingMasks 手动旋转视图,就好像用户旋转了手机并且它已经自动旋转了一样。我也希望它是即时的,没有动画。我你想知道我为什么需要这个,看看我在iPhone Dev 的另一个问题 - 保持界面旋转

谢谢!!

4

2 回答 2

1

您在这里要做的是使用仿射变换来旋转您的视图,尽管目前我面前没有代码,但我已经完成了这一点。如果你做一个简单的旋转,你会发现你的视图会被切断,而不是像你想要的那样在中心,你需要在这里做的是设置你的图层的锚点(玩弄这个值直到你得到你想要的)为了使视图出现在您想要的位置。解决这个问题的方法是进行 90 度仿射变换旋转并查看它对视图的影响。通过这种方式,您应该能够确定图层锚点需要在哪里。稍后当我在我的 Mac 面前时,我会在这里发布一些示例代码。希望能帮助到你

于 2009-08-03T13:28:44.907 回答
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 回答