首先,你需要創建一個類別:
UINavigationController + Rotation_IOS6.h
#import <UIKit/UIKit.h>
@interface UINavigationController (Rotation_IOS6)
@end
的UINavigationController + Rotation_IOS6.m:
#import "UINavigationController+Rotation_IOS6.h"
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
@end
然後,您實現這些方法在你的類,你想成爲唯一的景觀:
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
如果你正在使用的UITabBarController,只需更換UITabBarController的UINavigationController。 經過長時間的搜索,這個解決方案對我很好!我和你現在的情況一樣!
編輯
於是,我看到了你的樣品。你需要做一些改變。 1 - 爲UINavigationController類別創建一個新類。將該類命名爲UINavigationController + Rotation_IOS6(.h和.m) 2 - 您無需實施方法preferredInterfaceOrientationForPresentation
。您的類別應該是這樣的:
#import "UINavigationController+Rotation_IOS6.h"
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
@end
3 - 你要旋轉僅在景觀類,包括這在執行,正是這樣:
// Rotation methods for iOS 6
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
4 - 我會建議給還包括用於自轉iOS 5的方法的類內要進行橫向:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}
確認,作品! – Chris
+1:我需要在視圖控制器出現之前「強制」視圖控制器的方向,並且這樣做。希望我知道強制定位的「官方」方法,但在我這樣做之前,我會使用這種方法。 – brainjam
如果您打算不止一次地調用視圖,我建議將這些行添加到viewWillAppear。 – ChavirA