У меня есть настраиваемый UIPresentationController, и он переопределяет frameOfPresentationViewInContainerView для настраиваемой презентации viewController. Все работает нормально, кроме статусной строки.
Я вообще не хочу, чтобы строка состояния меняла внешний вид - она должна оставаться такой, какой она была раньше. Теперь документация Apple: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instp/UIViewController/modalPresentationCapturesStatusBarAppeferencerer говорит, что если modalPresentationStyle ORModalPresentationStyle не является UIModalPresentationStyle, то это UIModalPresentationStyle. Я должен быть в порядке, и строка состояния не должна меняться.
С помощью этого кода:
- (BOOL)prefersStatusBarHidden {
NSLog(
@"prefersStatusBarHidden was called %d %ld",
self.modalPresentationCapturesStatusBarAppearance,
(long)self.modalPresentationStyle
);
return YES;
}
Я вижу, что вызывается prefersStatusBarHidden, даже если modalPresentationCapturesStatusBarAppearance имеет значение NO (отображается как 0), а modalPresentationStyle - UIModalPresentationCustom (отображается как 4).
Очевидно, это причина того, что строка состояния изменяется при представлении viewController.
Но почему?
Я считаю, что iOS считает, что viewController представлен в полноэкранном режиме, хотя это не так.
Я обнаружил свойство UIPresentationController shouldPresentInFullscreen - по умолчанию оно возвращает YES. Возвращение NO совершенно не помогает, поэтому я даже не понимаю, что это свойство вообще делает ... Это буквально не имеет никакого эффекта. То же касается и свойства presentationStyle - я не вижу никакого эффекта при его изменении. Я ожидал, что свойство presentationStyle будет «перенаправлено» на свойство viewControllers modalPresentationStyle, но оно останется в UIModalPresentationCustom, что должно быть в первую очередь для инициирования настраиваемой презентации.
Итак, мои вопросы: кто-нибудь знает, как просто сохранить строку состояния, как она есть с настраиваемым UIPresentationController - и может ли кто-нибудь объяснить свойства shouldPresentInFullscreen и presentationStyle?
Спасибо! :)