首先,我已经查看了许多关于 iOS 强制纵向/横向方向的其他线程。

我有一个使用 IBM Worklight 构建的混合应用程序(我主要关注 iOS 平台,因为我已经有一个适用于 Android 的解决方案,并且运行良好)。我添加了一个cordova插件来访问设备功能。我的应用程序需要在除一个屏幕之外的所有屏幕上设置为纵向。在一个屏幕( View )上,我需要支持横向和纵向。然而,当我导航到另一个屏幕时,我只需要恢复为纵向,但在我的多次尝试中,它保持横向。

我正在使用 supportedInterfaceOrientationsshouldAutorotate 方法来锁定和解锁以及在仅支持纵向或横向和纵向之间切换。

注意:我的应用程序只有一个包含 webview 的 View Controller ,因此我无法使用解决方案来关闭和呈现模态视图 Controller 。

我还查看了其他线程,提到在 iOS 中使用变换进行力旋转,但这似乎也不起作用。 Is there a documented way to set the iPhone orientation?

(我的应用支持iOS7及以上)
唯一对我有用的是

[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];


objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationPortrait );

但是,如果我因为私有(private) api 使用这些应用程序,Apple 会拒绝我的应用程序。

当设备旋转为横向时,是否有其他方法可以强制将方向设置为纵向?

最佳答案

我知道一种在 ios 的 phonegap 插件中强制定向的奇怪方法。我在答案中添加了 ios 和 js 代码。

IOS

下面是我用来设置 count1=1 的插件,它将用于强制定向。

Helloworld插件.m

#import "HelloworlPlugin.h"

@implementation HelloworlPlugin

int count=0;



-(void)sayhello:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)option
{
    [arguments pop];
    NSString *responseString=[NSString stringWithFormat:@"%@",[arguments objectAtIndex:0]];

 if([responseString isEqualToString:@"1"])
 {
     count=1;
 }
    else
    {
        count=0;
    }
    NSLog(@"Zero %@",responseString);
}

-(int)count1
{
    NSLog(@"count= %d",count);
    if(count<1)
    {

        Cv=0;
    }
    else
    {
        Cv=1;
    }

    NSLog(@"%d",Cv);
    return Cv;


}

@end

下面是 MainViewcontroller.h,它具有 shouldAutorotateTOInterfaceOrientation 函数,其中基于 count1 的值,我在此代码中仅强制显示肖像,您可以为 count1 设置各种值,并根据该值强制定位她

CDVMainViewController.h
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    HelloworlPlugin *object=[[HelloworlPlugin alloc] init];

    int fValue=[object count1];

    NSLog(@"%d",fValue);
    if(fValue==1)
    {
    return (interfaceOrientation ==UIInterfaceOrientationPortrait);

    }
    else
    {
        return true;
    }
}

clickbutton() 是用来转为纵向的按钮。我传递的参数 1 在上述目标 c 编程中被设置为计数 1。
function clickbutton()
{
    cordova.exec(success,failure,"HelloworlPlugin","sayhello",[1]);
}

我刚刚举了一个例子,你可以根据自己的需要稍微吹一下。

关于cordova - 对于 iOS,当设备处于横向(水平翻转)时,强制定向为纵向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24285268/

10-12 03:37