我正在研究一个项目并遇到问题。我的问题是我正在制作5.0及以上的项目,我的项目全部是纵向视图,但只有一个视图同时具有视图(横向和纵向)我正在使用NavigationController自定义类并在自定义导航类中检查这样的Orientations`< / p>
- (NSUInteger)supportedInterfaceOrientations
{
int interfaceOrientation = 0;
if (self.viewControllers.count > 0)
{
id viewController;
for (viewController in self.viewControllers)
{
if ([viewController isKindOfClass:([CalenderViewController class])])
{
interfaceOrientation = UIInterfaceOrientationMaskAll;
}
else
{
interfaceOrientation = UIInterfaceOrientationMaskPortrait;
}
}
}
return interfaceOrientation;
}`
CalenderViewController是我的视图,支持两种视图 当我将视图弹出到CalenderViewController时,此代码适用于popview,这很好但是当我在CalenderViewController上推送一个只有纵向视图的新视图控制器时,新的viewcontroller仍保留在横向中,而它应该处于纵向模式。向前看感谢
答案 0 :(得分:0)
在这种情况下,您不应该在NO
上返回shouldAutorotate
。如果这样做,甚至不会检查支持的方向,并且您的控制器将卡在最后使用的方向上。
相反,只需在YES
上返回shouldAutorotate
并在supportedInterfaceOrientations
中指定单个方向(纵向),就像您已经这样做。
在YES
上返回shouldAutorotate
并不仅限于您希望控制器自由旋转到其他方向的时间。在弹出或推送不同的视图后,如果您可能需要控制器旋转回其唯一支持的方向,也应该使用它。