summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.h1
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.mm30
2 files changed, 18 insertions, 13 deletions
diff --git a/src/plugins/platforms/ios/qiosviewcontroller.h b/src/plugins/platforms/ios/qiosviewcontroller.h
index 971a474673..dffbf7dc27 100644
--- a/src/plugins/platforms/ios/qiosviewcontroller.h
+++ b/src/plugins/platforms/ios/qiosviewcontroller.h
@@ -45,6 +45,7 @@ class QIOSScreen;
// UIViewController
@property (nonatomic, assign) BOOL prefersStatusBarHidden;
@property (nonatomic, assign) UIStatusBarAnimation preferredStatusBarUpdateAnimation;
+@property (nonatomic, assign) UIStatusBarStyle preferredStatusBarStyle;
@end
diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm
index 9abd105d94..6667ec3dd8 100644
--- a/src/plugins/platforms/ios/qiosviewcontroller.mm
+++ b/src/plugins/platforms/ios/qiosviewcontroller.mm
@@ -245,6 +245,7 @@
// Status bar may be initially hidden at startup through Info.plist
self.prefersStatusBarHidden = infoPlistValue(@"UIStatusBarHidden", false);
self.preferredStatusBarUpdateAnimation = UIStatusBarAnimationNone;
+ self.preferredStatusBarStyle = UIStatusBarStyle(infoPlistValue(@"UIStatusBarStyle", UIStatusBarStyleDefault));
m_focusWindowChangeConnection = QObject::connect(qApp, &QGuiApplication::focusWindowChanged, [self]() {
[self updateProperties];
@@ -423,6 +424,22 @@
UIApplication *uiApplication = [UIApplication sharedApplication];
+ // -------------- Status bar style and visbility ---------------
+
+ UIStatusBarStyle oldStatusBarStyle = self.preferredStatusBarStyle;
+ if (focusWindow->flags() & Qt::MaximizeUsingFullscreenGeometryHint)
+ self.preferredStatusBarStyle = UIStatusBarStyleDefault;
+ else
+ self.preferredStatusBarStyle = QSysInfo::MacintoshVersion >= QSysInfo::MV_IOS_7_0 ?
+ UIStatusBarStyleLightContent : UIStatusBarStyleBlackTranslucent;
+
+ if (self.preferredStatusBarStyle != oldStatusBarStyle) {
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_IOS_7_0)
+ [self setNeedsStatusBarAppearanceUpdate];
+ else
+ [uiApplication setStatusBarStyle:self.preferredStatusBarStyle];
+ }
+
bool currentStatusBarVisibility = self.prefersStatusBarHidden;
self.prefersStatusBarHidden = focusWindow->windowState() == Qt::WindowFullScreen;
@@ -484,18 +501,5 @@
}
}
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_7_0)
-- (UIStatusBarStyle)preferredStatusBarStyle
-{
- // Since we don't place anything behind the status bare by default, we
- // end up with a black area, so we have to enable the white text mode
- // of the iOS7 statusbar.
- return UIStatusBarStyleLightContent;
-
- // FIXME: Try to detect the content underneath the statusbar and choose
- // an appropriate style, and/or expose Qt APIs to control the style.
-}
-#endif
-
@end