做旋转时关于willAnimateRotate和didRotateFrom的问题

时间:2012-02-11 17:16:44

标签: iphone

到目前为止我所拥有的是

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"willAnimateRotationToInterfaceOrientation");
    if(toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
        NSLog(@"PortraitUpsideDown");
        // Do method A
    } else {
        [[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
        // Do method B
    } 
}

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    NSLog(@"didRotateFromInterfaceOrientation");
    if( fromInterfaceOrientation == UIInterfaceOrientationPortrait || fromInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
        NSLog(@"OrientationPortrait or PortraitUpsideDown");
        [[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
        // Do method B
    } else {
        NSLog(@"From else");
        [[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
        // Do method A
    }
}

我的逻辑是在从xcode点击RUN后,willAnimateRotationToInterfaceOrientation:将被调用,因为我将支持的设备方向设置为 UpsideDown 来自 MyApp.xcodeproj 的摘要。此外,我还认为不应该调用didRotateFromInterfaceOrientation:,因为我们刚刚启动了应用程序。这意味着根本没有以前的状态。

不幸的是,这是我在执行调试器后得到的

  

2012-02-11 12:04:08.776 MyApp [7505:10703] willAnimateRotationToInterfaceOrientation:

     

2012-02-11 12:04:08.776 MyApp [7505:10703] PortraitUpsideDown

     

2012-02-11 12:04:08.778 MyApp [7505:10703] didRotateFromInterfaceOrientation:

     

2012-02-11 12:04:08.779 MyApp [7505:10703] OrientationPortrait或   PortraitUpsideDown

我现在迷路了。有没有人对这个问题有任何想法,请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

旋转时遇到了一些问题,与你的类似。简短的版本是意志和做法不是100%可靠。您应该尝试快速来回旋转,看看会发生什么。可能是因为我很新,或者它可能是一个真正的错误。我所做的是,在didRotateFromInterfaceOrientation:中,检查当前的方向并采取相应的行动:

if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation) {
// do your portrait stuff
} else {
// do your landscape stuff
}

在我找到UIInterfaceOrientationIsPortait测试之前,我实际上正在检查框架以查看self.view.frame.size.width> self.view.frame.size.height,这也是可靠但有点难看。

无论哪种方式都是可靠的。我在商店里有几个应用程序,QPalettes和QColor,它们在一堆用户创建的屏幕元素上进行旋转。我要做的就是存储尺寸,在didRotateFromInterfaceOrientation之后,我检查新的尺寸,如果它们不同,重新绘制屏幕上的所有内容。如果您想要一个促销代码来联系我,请查看任一应用程序中的旋转(它们旋转相同 - QColor更复杂,因为它也会绘制交叉点)。

享受,

达明