2

我正在制作一个应用程序,它既可以是纵向模式,也可以是横向模式。因为iOS 5.0我通过以下方式添加视图,即

 -(BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation

{
   if(((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
    (interfaceOrientation == UIInterfaceOrientationLandscapeRight)))
{
    productname.frame=CGRectMake(240, 97, 106, 20);
            self.view = landscapeView;

}

else if

(((interfaceOrientation == UIInterfaceOrientationPortrait) ||
          (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))){
    productname.frame=CGRectMake(153, 151, 106, 20);

    self.view = portraitView;

}

   return YES;

}

但是因为iOS 6.0我有以下两种定位方法,

  • (NSUInteger)支持的接口方向
  • (BOOL) 应该自动旋转

我实际上需要一种在设备旋转期间必须触发的方法。如果有人有想法,请告诉我。我已经在这上面浪费了很多时间。

提前非常感谢。

4

2 回答 2

1

我正在使用带有以下代码的 UINavigationController 子类:

    - (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    if (self.topViewController.presentedViewController) {
        return self.topViewController.presentedViewController.supportedInterfaceOrientations;
    }
    return self.topViewController.supportedInterfaceOrientations;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return self.topViewController.preferredInterfaceOrientationForPresentation;
}

这对我来说很完美

在 AppDelegate.m 文件中:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    return [UIDevice isIpad] ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskAllButUpsideDown;
}
于 2013-02-23T13:37:11.003 回答
0

利用

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
于 2013-02-23T14:55:32.260 回答