我还应该做什么?
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutoRotate
{
return NO;
}
我的 viewController 仍然旋转。
它嵌入在导航堆栈中。
如果我子类化 UINavigationController,并在那里实现相同的仅纵向模板,并将 viewController 嵌入到调整后的 navigationController 中,那么它就可以工作,但我无意在 UINavigationController 出现的任何地方重写我的代码。
这里的最佳实践是什么?
原始答案:不需要子类 - 只需像我在解决方案中描述的那样进行一个类别:iOS6 模拟器中的顶部 home 按钮纵向不起作用
基本上,对于 iPhone,UINavigationController 允许旋转除“顶部主页按钮肖像”之外的所有内容,对于 iPad,它允许所有内容旋转。
因此,您要么执行一个类别,将决策转发到当前活动的视图控制器,要么执行类似静态的操作
UINavigationController-Rotation.h:
@interface UINavigationController (Rotation)
@end
UINavigationController-Rotation.m:
#import "UINavigationController-Rotation.h"
@implementation UINavigationController (Rotation)
#pragma From UINavigationController
- (BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
#pragma -
@end
更新:正如哈维尔·索托(Javier Soto)指出的那样,如果有第二个类别做同样的事情,这可能会导致未定义的行为。在这种情况下,子类化可能是更好的解决方案。
在你知道没有其他类别做同样的事情的情况下,我仍然认为这是一个有效、省力、本地和务实的解决方案。我对此并不虔诚。你自己决定吧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)