Исправлена ориентация для Iphone в универсальном приложении
Я разработал универсальное приложение, которое я хочу, чтобы поддерживать все ориентации для IPAD, но для Iphone я просто хочу UIInterfaceOrientationPortrait и UIInterfaceOrientationPortraitUpsideDown только для этого у меня есть
-(BOOL)shouldAutorotate {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
return NO;
}else{
return YES;
}
}
- (NSUInteger)supportedInterfaceOrientations{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
return UIInterfaceOrientationMaskPortrait;
}else{
return UIInterfaceOrientationMaskAll;
}
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
return interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ;
}else{
return YES;
}
}
Но все же это не остановит ориентацию в ландшафте
2 ответа
Просто отключите все другие ориентации, кроме UIInterfaceOrientationPortrait
а также UIInterfaceOrientationPortraitUpsideDown
один для iPhone из резюме, как в описании ниже. На картинке "Перевернутый" отключен, пожалуйста, включите его. Благодарю.
Для переворачивания портрета используйте навигационный контроллер
1) Я создал новый подкласс UINavigationController и добавил методы shouldAutorotate и compatibilityInterfaceOrientation:
// MyNavigationController.h:
#import <UIKit/UIKit.h>
@interface MyNavigationController : UINavigationController
@end
// MyNavigationController.m:
#import "MyNavigationController.h"
@implementation MyNavigationController
...
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
...
@end
2) В AppDelegate я использовал свой новый подкласс для отображения моего корневого ViewController (это introScreenViewController, подкласс UIViewController) и установил self.window.rootViewController, поэтому выглядит так:
nvc = [[MyNavigationController alloc] initWithRootViewController:introScreenViewController];
nvc.navigationBarHidden = YES;
self.window.rootViewController = nvc;
[window addSubview:nvc.view];
[window makeKeyAndVisible];