由于ShouldAutorotateToInterfaceOrientation在iOS 6中已弃用并且我使用它来强制特定视图仅限于纵向,在iOS 6中执行此操作的正确方法是什么?这仅适用于我的应用的一个区域,所有其他视图都可以旋转.
我有一个大型应用程序,我需要一些时间来优化iOS9.
编辑:我担心的是当应用程序窗口大小减少时,所有UI都被挤压在一起.所以我的问题是,有没有办法强制全屏显示应用程序?
在我的应用程序中,我有多个视图,一些视图需要支持纵向和横向,而其他视图只需要支持纵向.因此,在项目摘要中,我已经选择了所有方向.
以下代码用于在iOS 6之前禁用给定视图控制器上的横向模式:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
Run Code Online (Sandbox Code Playgroud)
由于在iOS6中不推荐使用shouldAutorotateToInterfaceOrientation,我将以上内容替换为:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMask.Portrait;
}
Run Code Online (Sandbox Code Playgroud)
当视图出现时我会正确调用此方法(我可以设置断点以确保这一点),但是界面仍然会旋转到横向模式,而不管我是否仅为纵向模式返回蒙版.我究竟做错了什么?
似乎目前无法构建一个每个视图具有不同方向要求的应用程序.它似乎只遵循项目摘要中指定的方向.
我的应用程序有大约10个不同的UIViewControllers,其中一个我想在旋转设备时切换到横向模式.(其余的,我想保持肖像.)
为了在那个视图上实现旋转,我需要实现其控制器的'shouldAutorotate'方法并返回YES.由于这个视图是通过导航控制器访问的,我还需要创建一个UINavigationController的子类,它实现'shouldAutorotate'并返回YES.
这个解决方案很有效,但也很好.我发现我推到UINavigationController的子类上的所有UIViewControllers都会响应旋转,即使我实现'shouldAutorotate'并返回NO.(记住:我只希望一个特定的UIViewController响应旋转,而不是导航控制器堆栈中的每一个.)
所以,我的问题是:我该如何做到最好?我能提出的所有解决方案似乎都很麻烦,2)更糟糕,似乎没有用.
非常感谢.
嗨我正在尝试复制相同的旋转,当方向转移到横向时,可以在相机应用程序中看到.不幸的是我没有运气.我需要使用UIImagePickerController为自定义cameraOverlayView设置它.
从这幅肖像(B是UIButtons)
|-----------|
| |
| |
| |
| |
| |
| |
| B B B |
|-----------|
Run Code Online (Sandbox Code Playgroud)
为了这个景观
|----------------|
| B |
| |
| B |
| |
| B |
|----------------|
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望按钮能够粘在原始肖像底部并在其中心旋转.我正在使用Storyboard并启用了Autolayout.任何帮助是极大的赞赏.
ios ×4
ios6 ×2
iphone ×2
xcode ×2
ios9 ×1
ipad ×1
landscape ×1
multitasking ×1
objective-c ×1
portrait ×1
xamarin.ios ×1