【问题标题】:Device Orientation not working for my app设备方向不适用于我的应用
【发布时间】:2013-04-26 14:50:51
【问题描述】:

我在实施设备定位方法时遇到问题。我将其实现为

关注

-(BOOL)shouldAutorotate{


    return TRUE;

    }

    -(NSUInteger)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskAll;

    }

在我正在做的应用程序中

self.window.rootViewController = self.splitViewController;

我希望我的应用适用于所有方向。但是任何方向都不起作用

正确。有什么帮助吗?我的应用是针对 IOS 4.3 的,但它也应该适用于 IOS 5 和 6。

【问题讨论】:

    标签: objective-c xcode uiinterfaceorientation


    【解决方案1】:

    首先,在 AppDelegate 中,写下这个。这是非常重要的

    - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
    {
         return (UIInterfaceOrientationMaskAll);
    }
    

    另外,很大程度上取决于您的 UIViewController 嵌入到哪个控制器中。

    例如,如果它在 UINavigationController 内部,那么您可能需要将该 UINavigationController 子类化以覆盖这样的方向方法。

    子类 UINavigationController(层次结构的顶部视图控制器将控制方向。)需要将其设置为 self.window.rootViewController。

    - (BOOL)shouldAutorotate
     {
         return self.topViewController.shouldAutorotate;
     }
     - (NSUInteger)supportedInterfaceOrientations
     {
         return self.topViewController.supportedInterfaceOrientations;
     }
    

    从 iOS 6 开始,UINavigationController 不会向其 UIVIewControllers 请求方向支持。因此我们需要对它进行子类化。

    【讨论】:

    • 在我的情况下 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 将单独为我解决问题,我猜
    • 因为仅添加这个就给了我所有的方向。
    • 是的,如果你的视图控制器本身就是根控制器,那么这个方法只会让它工作。万一,你的根控制器是 UINavigationController 那么你需要继承它!否则没关系!
    • 我想知道是否需要在特定的视图控制器中添加 (BOOL)shouldAutorotate 和 (NSUInteger)supportedInterfaceOrientations ?
    • 是的,你需要这些方法,这些方法会在你的视图第一次创建时被调用。如果您不希望视图旋转,请不要编写这些方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2020-04-24
    相关资源
    最近更新 更多