Я предлагаю просто сделать ваше приложение для портретного режима, а затем всякий раз, когда вам нужен ландшафтный режим, тогда разрешите ландшафтный режим.
Во-первых, как ранее предлагалось щелкнуть по -> Название проекта -> Общие -> Информация о развертывании -> Выберите только портрет для ориентации устройства.
Во-вторых, в вашем AppDelegate.h
добавить это свойство ..
@property (nonatomic) BOOL fullScreenVideoIsPlaying;
Затем на вашем AppDelegate.m
я добавлю эту функцию ..
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
if (self.fullScreenVideoIsPlaying == YES) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
return UIInterfaceOrientationMaskPortrait;
}
}
После этого, в контроллере представления, что вам нужен ландшафт, создайте функцию или просто добавьте этот код в ваш метод viewWillAppear
, в зависимости от того, как вы хотите это сделать.
((AppDelegate *)[[UIApplication sharedApplication] delegate]).fullScreenVideoIsPlaying = YES;
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
Тогда для установки обратно в портретном режиме вы это сделать ..
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.fullScreenVideoIsPlaying = NO;
[self supportedInterfaceOrientations];
[self shouldAutorotate:UIInterfaceOrientationPortrait];
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
Вам может понадобиться эти функции для прошивки 8 ..
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate:(UIInterfaceOrientation)interfaceOrientation{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
Я надеюсь, что это помогает .. :)
Почему бы не просто настроить приложение только для портретного режима, а затем, когда вам нужен ландшафтный режим, просто разрешите режим ландшафта? – NorthBlast
@NorthBlast Я не думаю, что вы можете это сделать. Если вы включите только портрет в проекте, вы вообще не получите уведомление об изменениях ориентации. – Fogmeister
Я сделал это несколько раз .. :) и мой проект установлен в портретный режим .. известный как принудительный ландшафтный режим;) – NorthBlast