adi*_*dit 1 iphone objective-c ipad ios
因此,我尝试通过执行以下操作强制更改部分代码中的设备方向:
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait ||
[[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown){
[[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationLandscapeLeft animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
但方向并没有改变.为什么是这样?基本上目前的方向是肖像,我希望它被迫在景观中
如果Inder Kumar Rathore的建议有效,那就太好了.但文档将orientation属性描述为只读,所以如果它有效,我不确定你是否可以依赖它在未来工作(除非Apple做了聪明的事情并改变了它;强迫方向改变,无论如何用户当前正在拿着他们的设备,这是一个明显的功能需求).
作为替代方案,在viewDidLoad中插入的以下代码将成功(并且有点奇怪)强制方向(假设您已经修改了你应该将rutoronate zorro推荐为autorotateToInterfaceOrientation):
if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
{
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *view = [window.subviews objectAtIndex:0];
[view removeFromSuperview];
[window addSubview:view];
}
Run Code Online (Sandbox Code Playgroud)
很明显,如果用户当前正在以纵向方向握住他们的设备(这可能是你的设备只能设置为仅景观,并且如果用户以纵向模式持有他们的设备,则此例程将其转换为横向),这样做就是这样做.如果您的shouldAutorotateToInterfaceOirentation仅设置为纵向,则只需将UIDeviceOrientationIsPortrait与UIDeviceOrientationIsLandscape交换即可.
出于某种原因,从主窗口中删除视图然后重新添加它会强制它查询shouldAutorotateToInterfaceOrientation并正确设置方向.鉴于这不是Apple批准的方法,也许人们应该避免使用它,但它适用于我.你的旅费可能会改变.但是这个SO讨论也涉及其他技术.
| 归档时间: |
|
| 查看次数: |
9870 次 |
| 最近记录: |