到目前为止我所拥有的是
-(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
我现在迷路了。有没有人对这个问题有任何想法,请帮忙。感谢。
答案 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更复杂,因为它也会绘制交叉点)。
享受,
达明