首先,我已经查看了许多关于 iOS 强制纵向/横向方向的其他线程。
我有一个使用 IBM Worklight 构建的混合应用程序(我主要关注 iOS 平台,因为我已经有一个适用于 Android 的解决方案,并且运行良好)。我添加了一个cordova插件来访问设备功能。我的应用程序需要在除一个屏幕之外的所有屏幕上设置为纵向。在一个屏幕( View )上,我需要支持横向和纵向。然而,当我导航到另一个屏幕时,我只需要恢复为纵向,但在我的多次尝试中,它保持横向。
我正在使用 supportedInterfaceOrientations
和 shouldAutorotate
方法来锁定和解锁以及在仅支持纵向或横向和纵向之间切换。
注意:我的应用程序只有一个包含 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/