Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 0 additions & 20 deletions packages/core/ui/core/view/index.ios.ts
Original file line number Diff line number Diff line change
Expand Up @@ -978,28 +978,8 @@ export class View extends ViewCommon {
}

updateStatusBarStyle(value: 'dark' | 'light') {
// Keep UINavigationBar style aligned (affects legacy + some container defaults).
const parent = this.parent;
const ctrl = parent?.ios?.controller;
if (ctrl && ctrl instanceof UINavigationController) {
const navigationBar = ctrl.navigationBar;
if (navigationBar) {
navigationBar.barStyle = value === 'light' ? UIBarStyle.Black : UIBarStyle.Default;
}
}

// iOS requires a controller invalidation to re-evaluate `preferredStatusBarStyle`.
const ownerController = this.viewController || IOSHelper.getParentWithViewController(this as any)?.viewController;

// Force overrideUserInterfaceStyle if available (iOS 13+) to ensure status bar contrast.
if (SDK_VERSION >= 13 && ownerController) {
const style = value === 'light' ? UIUserInterfaceStyle.Dark : UIUserInterfaceStyle.Light;
ownerController.overrideUserInterfaceStyle = style;
if (ctrl && ctrl instanceof UINavigationController) {
ctrl.overrideUserInterfaceStyle = style;
}
}

IOSHelper.invalidateStatusBarAppearance(ownerController, `View.updateStatusBarStyle:${value}`);
}

Expand Down
9 changes: 4 additions & 5 deletions packages/core/ui/core/view/view-helper/index.ios.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,15 +151,14 @@ class UILayoutViewController extends UIViewController {
// @ts-ignore
public get preferredStatusBarStyle(): UIStatusBarStyle {
const owner = this.owner?.deref();
if (owner) {
if (owner?.statusBarStyle) {
if (SDK_VERSION >= 13) {
return owner.statusBarStyle === 'dark' ? UIStatusBarStyle.DarkContent : UIStatusBarStyle.LightContent;
return owner.statusBarStyle === 'light' ? UIStatusBarStyle.LightContent : UIStatusBarStyle.DarkContent;
} else {
return owner.statusBarStyle === 'dark' ? UIStatusBarStyle.LightContent : UIStatusBarStyle.Default;
return owner.statusBarStyle === 'light' ? UIStatusBarStyle.LightContent : UIStatusBarStyle.Default;
}
} else {
return UIStatusBarStyle.Default;
}
return UIStatusBarStyle.Default;
}
}

Expand Down
18 changes: 3 additions & 15 deletions packages/core/ui/page/index.ios.ts
Original file line number Diff line number Diff line change
Expand Up @@ -359,15 +359,14 @@ class UIViewControllerImpl extends UIViewController {
// @ts-ignore
public get preferredStatusBarStyle(): UIStatusBarStyle {
const owner = this._owner?.deref();
if (owner) {
if (owner?.statusBarStyle) {
if (SDK_VERSION >= 13) {
return owner.statusBarStyle === 'light' ? UIStatusBarStyle.LightContent : UIStatusBarStyle.DarkContent;
} else {
return owner.statusBarStyle === 'dark' ? UIStatusBarStyle.LightContent : UIStatusBarStyle.Default;
return owner.statusBarStyle === 'light' ? UIStatusBarStyle.LightContent : UIStatusBarStyle.Default;
}
} else {
return UIStatusBarStyle.Default;
}
return UIStatusBarStyle.Default;
}
}

Expand Down Expand Up @@ -457,17 +456,6 @@ export class Page extends PageBase {
const frame = this.frame;
if (frame?.ios && value) {
const navigationController: UINavigationController = frame.ios.controller;
const navigationBar = navigationController.navigationBar;

navigationBar.barStyle = value === 'light' ? UIBarStyle.Black : UIBarStyle.Default;

// Force overrideUserInterfaceStyle on the navigation controller as well
if (SDK_VERSION >= 13) {
const style = value === 'light' ? UIUserInterfaceStyle.Dark : UIUserInterfaceStyle.Light;
navigationController.overrideUserInterfaceStyle = style;
navigationBar.overrideUserInterfaceStyle = style;
}

IOSHelper.invalidateStatusBarAppearance(navigationController, `Page._updateStatusBarStyle:${value}`);
}
}
Expand Down