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;