2012-11-19 18 views
0

我想支持除主视图控制器以外的所有视图的所有方向。我似乎无法找到办法做到这一点。某些视图的Xcode iphone方向支持

我既可以支持所有视图的方向,也可以支持整个应用的视图。您如何支持整个应用程序中某些视图的方向?

+0

是你的问题解决? – Rajneesh071

+0

http://stackoverflow.com/questions/12630359/ios-6-how-do-i-restrict-some-views-to-portrait-and-allow-others-to-rotate/13194720#13194720 – Zaraki

+0

不,我,我不知道如何继承最顶级的控制器。请指教。谢谢! – user984248

回答

1

我还没有与需要采取行动,你描述方式的应用工作,但这里是当你需要控制方向支持苹果的文档表明什么:

动态控制是否发生旋转时

有时您可能想要动态禁用自动旋转。例如,对于 示例,如果要在短时间内完全禁止旋转 ,则可以执行此操作。您必须暂时禁用想要手动控制 状态栏位置的 方向更改(例如,当您调用 setStatusBarOrientation:animated:方法时)。

>如果您想要暂时禁用自动旋转,请避免使用 操纵方向遮罩来执行此操作。请改为在最顶端的视图控制器上覆盖shouldAutorotate方法 。在执行任何自动旋转之前调用此方法为 。如果它返回NO,那么将禁止旋转 。

来源:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html#//apple_ref/doc/uid/TP40007457-CH7-SW1

1

子类中最顶层的控制器。 例如你有一个导航控制器作为最顶层控制器,那么你只需要 子UINavigationController写下面的代码行中的子类

- (BOOL)shouldAutorotate 
{ 
    return [[self.viewControllers lastObject] shouldAutorotate]; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return [[self.viewControllers lastObject] supportedInterfaceOrientations]; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; 
} 

现在的.m文件覆盖方法- (BOOL)shouldAutorotate为每个您项目中的控制器。 返回TRUE为那些你需要做旋转的控制器,并且为那些你不需要旋转的控制器返回FALSE

干杯!!!!!

+0

你可以请提供一个这个实现的例子吗?我似乎无法弄清楚它。谢谢 – user984248

+0

首先上面的一段代码将在5.0之后工作,从5.0 - (BOOL)shouldAutorotate已经到来。我可以向您发送我在应用程序中使用的导航控制器的帮助器子类。 – Mihir

+0

好的。请发给我。 – user984248