4

У меня проблема с modalviewcontrollers, которую я хочу представить на экране iPad. Если я оставлю размер такой, как есть, значит, все в порядке. Но у меня очень мало информации об этих взглядах, поэтому мне нужно изменить их размер.Невозможно сделать модальный вид прямо в центре экрана на iPad iOS6

Итак, когда я изменяю их размер, я не могу заставить их появляться в середине экрана. Даже если мне удастся сосредоточить одну из них в одной ориентации, она перепуталась с другой.

Вот мой текущий код:

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:acvc]; 
[nav setModalPresentationStyle:UIModalPresentationFormSheet]; 
[nav setModalTransitionStyle: UIModalTransitionStyleCoverVertical]; 
[[acvc view] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"main_bg.jpg"]]]; 
[self presentViewController:nav animated:YES completion:nil]; 
nav.view.superview.frame = CGRectMake(self.view.bounds.size.width/2 + 175, self.view.bounds.size.height/2 - 125, 350, 250); 
// nav.view.superview.center = self.view.window.center; 

бы признателен за любую помощь, спасибо.

+0

Я пробовал ваш код (с этой последней строки без разметки), и он центрирован в обоих направлениях. Какой результат вы видите? – rdelmar

+0

@rdelmar Если вы запустите этот код в портретной ориентации на iPad, он будет показан в центре, и если вы повернете экран с экрана, он останется центрированным. Но! Если вы сначала запустите его в ландшафтном режиме, он будет очень левым и низким на экране, а затем он останется таким, даже если вы поворачиваете экран до портрета. – titicaca

ответ

4

Изменение вашей последней строки к следующему:

nav.view.superview.bounds = CGRectMake(0, 0, 350, 250); 
+0

Работает как очарование! Спасибо. Я думаю, что я уже пробовал это, и это не сработало, возможно, я сделал что-то не так ... – titicaca

+0

не работает, я попробовал ваш код – Ranjit

4

Остановился работает в iOS7, к сожалению. Только изменение ModalTransitionStyle для Dissolve решает проблему. Может быть, это ошибка в прошивке 7 ...

7

Вот метод, который работает на iOS7, а также iOS6 и iOS5 и до сих пор позволяет использовать UIModalTransitionStyleCoverVertical:

-(void)presentController:(UIViewController*)controller fromRootController:(UIViewController*)rootController withSize:(CGSize)size 
{ 
    UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:controller]; 
    nav.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    nav.modalPresentationStyle = UIModalPresentationFormSheet; 
    [rootController presentModalViewController:nav animated:YES]; 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) 
    { 
     nav.view.superview.backgroundColor = [UIColor clearColor]; 
     nav.view.bounds = CGRectMake(0, 0, size.width, size.height); 
    } 
    else 
    { 
     nav.view.superview.bounds = CGRectMake(0, 0, size.width, size.height); 
    } 
} 
+0

Поблагодари! это отлично работает на iOS7! – drasick

0

в ИОС 7 Вы могут использовать:

- (void)viewWillLayoutSubviews 
{ 
    [super viewWillLayoutSubviews]; 
    self.view.superview.bounds = CGRectMake(0, 0, width, height); 
} 

Это работает.