iPhone dev - 手动旋转视图

时间:2009-08-03 03:31:00

标签: iphone interface orientation rotation manual

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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];
}   

}

//我希望代码不需要解释 //您可以删除动画语句以获得所需的效果(未动画)。