首先,我已经查看了iOS上强制纵向/横向方向的许多其他主题。
我有一个使用IBM Worklight构建的混合应用程序(我主要关注iOS平台,因为我已经为Android提供了一个解决方案,它工作正常)。我添加了一个cordova插件来访问设备功能。我的应用程序需要在除一个屏幕之外的所有屏幕上设置为纵向。在一个屏幕(视图)上,我需要支持横向和纵向。然而,当我导航到另一个屏幕时,我只需要恢复到肖像,但在我的许多尝试中,它仍然保持在风景中。
我正在使用supportedInterfaceOrientations
和shouldAutorotate
方法锁定&解锁和切换只支持肖像或风景&的画像。
注意:我的应用程序只有一个包含webview的视图控制器,因此我无法使用解决方案来解除并呈现模态视图控制器。
我还看过其他线程在iOS中使用transform来提及强制旋转,但这似乎也不起作用。 Is there a documented way to set the iPhone orientation?
(我的应用支持iOS7及以上版本) 唯一对我有用的是
[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
和
objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationPortrait );
但是,如果因使用私人API而使用Apple,Apple会拒绝我的应用。
当设备旋转到横向时,是否还有其他方法可以将方向强制为纵向?
答案 0 :(得分:1)
我知道在ios的phonegap插件中强制定位的一种奇怪的方法。我在答案中添加了ios和js代码。
IOS
下面是我用来设置count1 = 1的插件,用于强制定位。
HelloworldPlugin.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
下面是具有shouldAutorotateTOInterfaceOrientation函数的MainViewcontroller.h,其中基于count1的值我只强制在此代码中使用portrait,您可以为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()是用于转换为肖像的按钮。在上述目标c编程中,我传递的参数1被设置为计数1。
function clickbutton()
{
cordova.exec(success,failure,"HelloworlPlugin","sayhello",[1]);
}
我刚刚举了一个例子,你可以根据自己的需要稍微放松一下。
答案 1 :(得分:0)
我最近在使用worklight 6.2时遇到了类似的问题。即使我在appname.plist文件中设置suppportedOrientatations属性,它也无法正常工作。在worklight 6.1中,当我设置上述属性时,它完全没问题,你不需要做任何其他设置。