0

我在标签栏控制器顶部显示了一个模态视图,标签栏控制器的方向和我的模态视图当前处于纵向模式,我只需要将我的模态视图方向更改为横向模式,我尝试使用 UIDevice Orientation 但没有成功仅当 .plist 具有 UIDeviceOrientationKey 时才有效,并且我不希望我的整个应用程序处于横向模式。其次,我什至尝试使用 UIApplication setStatusBarOrientation 但我的视图没有响应,即只有我的设备(模拟器)旋转但视图仍保持纵向模式,在 UIView 上使用仿射变换创建一个空视图我的视图是通过 XIB 创建的。

请帮忙

谢谢拉克什

4

2 回答 2

1

我已经使用了它,并且可以通过一些调整来很好地工作。

于 2010-01-21T11:05:18.223 回答
0

直到今天,我使用了以下解决方案:

-(void)setOrientation:(UIInterfaceOrientation)orientation
{
 SEL rotation = @selector(_setRotatableViewOrientation:duration:);
 NSMethodSignature * methodSignature = [window methodSignatureForSelector:rotation];
 if (methodSignature)
 {
  NSInvocation * ivc = [NSInvocation invocationWithMethodSignature:methodSignature];
  [ivc setTarget:window];
  [ivc setSelector:rotation];
  // arg0 will be self, 1 will be cmd_ (current method selector)
  [ivc setArgument:&orientation atIndex:2];
  double duration = 0.4;
  [ivc setArgument:&duration atIndex:3];
  [ivc invoke];
 }
}

-(void)normalizeOrientation
{
 UIDeviceOrientation dOrientation = [UIDevice currentDevice].orientation;

 int orientation = -1;

    switch(dOrientation)
    {
        case UIDeviceOrientationPortrait:
            orientation = UIInterfaceOrientationPortrait;
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            orientation = UIInterfaceOrientationPortraitUpsideDown;
            break;
        case UIDeviceOrientationLandscapeRight:
            orientation = UIInterfaceOrientationLandscapeLeft;
            break;
        case UIDeviceOrientationLandscapeLeft:
            orientation = UIInterfaceOrientationLandscapeRight;
            break;
    }

    if (orientation != -1 && orientation != tabBarController.interfaceOrientation)
        [self setOrientation:orientation];
}

但由于 _setRotatableViewOrientation:duration:transition:toView: 没有记录 API,官方 AppStore 不会接受我的应用程序的新版本。

所以请注意在您的商业项目中使用它!Apple 新的自动化 API 检查器将拒绝您的应用程序!

于 2009-12-08T11:19:27.193 回答