2013-06-18 4 views
0

Пожалуйста, дайте мне подробный ответ. Я очень новичок в программировании.Как изменить ориентацию на ландшафт только в IOS 6?

В моей MainStoryboard_iPhone.storyboard у меня есть контроллер View с некоторыми UIImageViews на нем. В моем указателе атрибутов моего контроллера просмотра я изменил ориентацию на пейзаж. Я также реализован метод supportedInterfaceOrientations и preferredInterfaceOrientationForPresentation метода, как так:

-(NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskLandscapeLeft; 
} 
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
    return UIInterfaceOrientationLandscapeLeft; 
} 

Что происходит, является то, что мое приложение запускается в ландшафтном режиме, однако, кажется, что все мое UIImageViews по какой-то причине пошла через какое-то ненужное автоматические распорки и пружины, так что UIImageViews не размещаются так, как они появляются на моем раскадровке. Моя цель состоит в том, чтобы мое приложение было в режиме только пейзаж, в то время как мои UIImageViews остаются в том же месте, что и в раскадровке.

ответ

2
-(BOOL)shouldAutorotate 
{ 
NSLog(@"self.viewControllers>>%@",self.viewControllers); 
NSLog(@"self.viewControllers lastObject>>%@",[self.viewControllers lastObject]); 

return [[self.viewControllers lastObject] shouldAutorotate]; 
} 

-(NSUInteger)supportedInterfaceOrientations 
{ 
return [[self.viewControllers lastObject] supportedInterfaceOrientations]; 
} 

@end 

//After adding the custom class in ur project: 

#define IOS_OLDER_THAN_6 ([ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] < 6.0) 
#define IOS_NEWER_OR_EQUAL_TO_6 ([ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0) 
//Add dez methods for orientations: 

#pragma mark - 
#pragma mark ORIENTATION 

#ifdef IOS_OLDER_THAN_6 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
// Return YES for supported orientations. 
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 
#endif 


#ifdef IOS_NEWER_OR_EQUAL_TO_6 

-(BOOL)shouldAutorotate 
{ 
return YES; 
} 
- (NSUInteger)supportedInterfaceOrientations 
{ 
return UIInterfaceOrientationMaskLandscapeRight; 
} 

#endif 

Источник: last answer от Mr Kumar-Rami

+0

Это осуждается в IOS 6 – bmende

+0

я заменил ответ с той, которая появляется решать вопрос управления версиями. – hd1

+0

нет необходимости проверять системуVersion ... с if ... и т. Д. Просто просто .... напишите все методы ... iOS будет знать, как справиться с этим ... – TonyMkenu

Смежные вопросы