diff --git a/packages/core/ui/frame/index.d.ts b/packages/core/ui/frame/index.d.ts index 8a91ec2c7..fb5b602a2 100644 --- a/packages/core/ui/frame/index.d.ts +++ b/packages/core/ui/frame/index.d.ts @@ -134,6 +134,15 @@ export class Frame extends FrameBase { */ ios: iOSFrame; + /** + * Specify a custom UINavigationBar class (iOS only) + */ + iosNavigationBarClass: any; + /** + * Specify a custom UIToolbar class (iOS only) + */ + iosToolBarClass: any; + //@private /** * @private diff --git a/packages/core/ui/frame/index.ios.ts b/packages/core/ui/frame/index.ios.ts index 49e20cffa..ae198434b 100644 --- a/packages/core/ui/frame/index.ios.ts +++ b/packages/core/ui/frame/index.ios.ts @@ -28,6 +28,8 @@ export class Frame extends FrameBase { viewController: UINavigationControllerImpl; _animatedDelegate: UINavigationControllerDelegate; public _ios: iOSFrame; + iosNavigationBarClass: typeof NSObject; + iosToolbarClass: typeof NSObject; constructor() { super(); @@ -467,7 +469,9 @@ class UINavigationControllerImpl extends UINavigationController { private _owner: WeakRef; public static initWithOwner(owner: WeakRef): UINavigationControllerImpl { - const controller = UINavigationControllerImpl.new(); + const navigationBarClass = owner.deref()?.iosNavigationBarClass ?? null; + const toolbarClass = owner.deref()?.iosToolbarClass ?? null; + const controller = navigationBarClass || toolbarClass ? UINavigationControllerImpl.alloc().initWithNavigationBarClassToolbarClass(navigationBarClass, toolbarClass) : UINavigationControllerImpl.new(); controller._owner = owner; return controller;