在iOS设备上,在横向模式下不会进行启动画面旋转

时间:2016-01-22 08:36:23

标签: angularjs xcode7 splash-screen hybrid-mobile-app landscape-portrait

我使用AngularJS,Ionic和Bootstrap接管了一个项目,为移动设备创建混合应用程序。

升级到XCode 7之前一切顺利。我在编辑器中更新了我的HTML,CSS和JS代码,运行grunt run:ios来创建平台代码并打开XCode。从那里我构建.ipa文件没有任何问题(只是一些警告,可以忽略)。

但是,由于使用XCode 7(iOS 8和iOS 9设备需要),splascreen将显示不正确。含义:在纵向模式下。

注意#1:启动画面和应用必须是仅横向的。

注意#2:运行grunt run:android时,基于Android的设备上的一切都很好。

Per 34919547我将cordova-plugin-splashscreen插件更新为3.1.0版,如本文所述。我还更改了一个引用,因为旧版本在配置文件中是硬编码的。

现在首先在Portraid模式下错误地显示启动画面,然后在横向模式下(在定义的超时之后)显示它应该。所以事情会好一点,但不是100%。

如何在横向模式下完全显示 的启动画面?

1 个答案:

答案 0 :(得分:0)

您是否尝试取消这行代码?

{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [self class];

        SEL originalSelector = @selector(shouldAutorotate);
        SEL swizzledSelector = @selector(splash_shouldAutorotate);

        Method originalMethod = class_getInstanceMethod(class, originalSelector);
        Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);

        BOOL didAddMethod = class_addMethod(class,
                                            originalSelector,
                                            method_getImplementation(swizzledMethod),
                                            method_getTypeEncoding(swizzledMethod));

        if (didAddMethod) {
            class_replaceMethod(class,
                                swizzledSelector,
                                method_getImplementation(originalMethod),
                                method_getTypeEncoding(originalMethod));
        } else {
            method_exchangeImplementations(originalMethod, swizzledMethod);
        }
    });
}

尝试取消它:

{
    /*
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [self class];

        SEL originalSelector = @selector(shouldAutorotate);
        SEL swizzledSelector = @selector(splash_shouldAutorotate);

        Method originalMethod = class_getInstanceMethod(class, originalSelector);
        Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);

        BOOL didAddMethod = class_addMethod(class,
                                            originalSelector,
                                            method_getImplementation(swizzledMethod),
                                            method_getTypeEncoding(swizzledMethod));

        if (didAddMethod) {
            class_replaceMethod(class,
                                swizzledSelector,
                                method_getImplementation(originalMethod),
                                method_getTypeEncoding(originalMethod));
        } else {
            method_exchangeImplementations(originalMethod, swizzledMethod);
        }
    });
    */
}

您可以在cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m

中找到它