0

Я хочу представить modal view controller. В iOS7 все работает нормально, но в iOS8 изменен контроллер рамки. Я прочитал несколько ответов, и одним из решений является установка preferredContentSize и modalPresentationStyle = UIModalPresentationFormSheet.Установить рамку iOS8 в ModalViewController с UIModalPresentationCustom

Но мне нужен мой modalPresentationStyle = UIModalPresentationCustom и я не могу установить контроллер рамки с этим стилем презентации.

Мой код:

- (void)presentViewController:(UIViewController*)viewController withCustomSize:(NSValue*) size withInitialSetup:(void (^)(void))setupBlock withCompletion:(void (^)(void))completion { 

    UiViewController * navCon = [[UIViewController alloc] initWithRootViewController:viewController]; 
    navCon.shouldDismissKeyboardOnResign = YES; 

    if (SYSTEM_VERSION_LESS_THAN(IOS8)){ 

     navCon.modalPresentationStyle = UIModalPresentationFormSheet; 
     navCon.modalTransitionStyle  = UIModalTransitionStyleCoverVertical; 


    } else { 

     navCon.modalPresentationStyle = UIModalPresentationCustom; 
     navCon.modalTransitionStyle  = UIModalTransitionStyleCrossDissolve; 

    } 

    [viewController setupCustomNavigationBar]; 

    setupBlock(); 

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(IOS8)) { 

     navCon.transitioningDelegate = self; 

     if (size) { 

      CGSize sz = size.CGSizeValue; 
      navCon.preferredContentSize = CGSizeMake(sz.width, sz.height); 

     }else { 

      navCon.preferredContentSize = CGSizeMake(kPopupsWidth, kPopupsHeight); 
     } 
    } 

    [self presentViewController:navCon animated:YES completion:completion]; 

    if (SYSTEM_VERSION_LESS_THAN(IOS8)) { 

     if (size) { 

      CGSize sz = size.CGSizeValue; 
      navCon.view.superview.bounds = CGRectMake(0, 0, sz.width, sz.height); 

     } else { 

      navCon.view.superview.bounds = CGRectMake(0, 0, kPopupsWidth, kPopupsHeight); 
     } 

     [navCon.view.superview.layer setCornerRadius: 8]; 
     [navCon.view.superview.layer setBorderColor: [UIColor clearColor].CGColor]; 
     [navCon.view.superview.layer setBorderWidth: 2]; 
     [navCon.view.superview setClipsToBounds: YES]; 
    } 
} 

Я установил preferedContentSize но кадр не меняется. Любая идея, почему это происходит?

+0

Можете ли вы объяснить, что вы подразумеваете под «неправильным размером»? Может быть, представить картину того, о чем вы говорите? – InkGolem

+0

Для iOS7 мой кадр {{0, 0}, {512, 410}}; Для iOS8 мой кадр {{0, 0}, {960, 688}}; Итак, в iOS8 рамка неправильная. – mrodriguez

ответ

2

Если вы собираетесь использовать UIModalPrestationCustom, вам необходимо предоставить UIViewControllerTransitioningDelegate, в противном случае он будет использовать делегат с переходом по умолчанию, который в вашем случае будет звучать как делегат листа формы.

+0

Вы предлагаете создать пользовательский интерфейс UIViewControllerTransitioning для моего контроллера? – mrodriguez

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

  • Нет связанных вопросов^_^