В моем случае (iOS 12.1.4), я нашел, что это странное glitchy поведение было инициировано моделями, подаренными .modalPresentationStyle = .fullScreen
После обновления их presentationStyle к .overFullScreen
, незначительный сбой ушел.
Можно переопределить - (UIEdgeInsets)safeAreaInsets
метод для немногих iOS 12 подверсий с этим:
- (UIEdgeInsets)safeAreaInsets {
UIEdgeInsets insets = [super safeAreaInsets];
CGFloat h = CGRectGetHeight(self.frame);
if (insets.bottom >= h) {
insets.bottom = [self.window safeAreaInsets].bottom;
}
return insets;
}
Если Вы все еще хотите сохранить свою панель вкладок полупрозрачной, необходимо разделить на подклассы от UITabBar
и свойство safeAreaInsets
class MyTabBar: UITabBar {
private var safeInsets = UIEdgeInsets.zero
@available(iOS 11.0, *)
override var safeAreaInsets: UIEdgeInsets {
set {
if newValue != UIEdgeInsets.zero {
safeInsets = newValue
}
}
get {
return safeInsets
}
}
переопределения}
, идея не состоит в том, чтобы позволить системе устанавливать zero
вставки, таким образом, панель вкладок не перейдет.