首先,在很大程度上取決於與控制器UIViewController中嵌入。
例如,如果其內部的UINavigationController,那麼你可能需要繼承的是UINavigationController的覆蓋方位的方法是這樣的。
subclassed UINavigationController(層次結構的頂級視圖控制器將控制方向。)需要將其設置爲self.window.rootViewController。
- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}
從iOS 6開始,UINavigationController不會要求它的UIVIewControllers支持方向。因此我們需要對它進行子類化。
此外
那麼,對於UIViewControllers,其中只需要縱向模式,寫這些功能
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait);
}
對於UIViewControllers,需要景觀也變化屏蔽所有。
- (NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskAllButUpsideDown);
//OR return (UIInterfaceOrientationMaskAll);
}
現在,如果您想在方向更改時進行一些更改,請使用此功能。
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
}
非常重要
在AppDelegate中,寫這篇文章。這是非常重要的。
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return (UIInterfaceOrientationMaskAll);
}
如果您只想爲所有視控制器提供肖像模式,請應用portait遮罩。即UIInterfaceOrientationMaskPortrait
否則,如果您希望某些UIViewControllers保留在肖像中,而其他人支持所有的方向,則應用ALL掩碼。即UIInterfaceOrientationMaskAll
對不起,請查看我對該問題所做的修改。 – Napolux
查看編輯答案 – mayuur
剛剛找到了測試的時間。有用! – Napolux