限制某些视图的自动旋转
Posted
技术标签:
【中文标题】限制某些视图的自动旋转【英文标题】:restricting autorotation on certain views 【发布时间】:2013-04-05 13:21:25 【问题描述】:我的应用程序包含两个表视图控制器。在第一个中,我希望视图能够左右旋转(除了纵向模式),但是在第二个表视图控制器中(我在从第一个表中点击一个单元格后导航到)我想要它只能在纵向模式下查看。我试过这段代码,但它不起作用,它一直在旋转。
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
- (BOOL) shouldAutorotate
return NO;
注意:我确实从项目目标的“摘要”选项卡中启用了左/右/纵向方向。有什么办法吗?
【问题讨论】:
检查这个“***.com/questions/12772749/…” 【参考方案1】:为 UINavigationController 创建一个类别,其中包括以下方法:
(适用于 ios 6 和 iOS 5)
- (BOOL)shouldAutorotate
return self.topViewController.shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations
return self.topViewController.supportedInterfaceOrientations;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
return [self.topViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
然后在你的控制器中实现这些方法
第一:
- (BOOL)shouldAutorotate
return YES;
- (NSUInteger)supportedInterfaceOrientations
if (RUNNING_IPAD)
return UIInterfaceOrientationMaskAll;
else
return UIInterfaceOrientationMaskAllButUpsideDown;
;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
if (RUNNING_IPAD)
return YES;
else
return toInterfaceOrientation != UIInterfaceOrientationMaskPortraitUpsideDown;
第二个:
- (BOOL)shouldAutorotate
return NO;
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
return NO;
项目的旋转设置应如下所示:
【讨论】:
谢谢!我确实找到了一个更简单的答案,但我选择了这个,因为它同时支持 ios 5 和 6,我的只支持 6。【参考方案2】:其实我找到了解决问题的方法:
-(BOOL)shouldAutorotate
return YES;
-(NSInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
即使您在项目 Traget 的“摘要”选项卡中切换了左/右方向,这也会将视图限制为纵向。
【讨论】:
以上是关于限制某些视图的自动旋转的主要内容,如果未能解决你的问题,请参考以下文章
您可以将 UIView Clip Subviews 限制在视图的某些方面吗?