我一直在使用精彩的[[UINavigationBar appearance] set...
为我的UI设置应用程序范围的外观。但是,我正在使用SKStoreProductViewController
并希望删除所有样式,以便显示默认的Apple UI。奇怪的是,没有做任何事情,我得到了一个普通的UI和我的自定义用户界面,我真的不明白。我试过反对我所有的UI更改:
[storeController.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[storeController.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
nil, UITextAttributeTextColor,
nil, UITextAttributeTextShadowColor,
nil]];
[storeController.navigationController.navigationBar setTitleVerticalPositionAdjustment:0 forBarMetrics:UIBarMetricsDefault];
[storeController.navigationController.navigationItem.leftBarButtonItem setBackgroundVerticalPositionAdjustment:0 forBarMetrics:UIBarMetricsDefault];
但这似乎不起作用,根本没有任何区别。如何将其重新设置为默认的UI设置?
问候,
麦克
答案 0 :(得分:7)
好的,我不得不求助于一个讨厌的小解决方法来解决这个问题。虽然我一直都知道这是一种做法,但我不想诉诸它,因为它感觉很乱。
我将UINavigationController
子类化为类似CustomNavigationViewController
的内容,并且完全没有对其进行任何更改。换句话说,它是UINavigationController
,但名称不同。然后我用了:
[[UINavigationBar appearanceWhenContainedIn:[CustomNavigationViewController class], nil] set....
设置外观,仅将其应用于我的自定义类的NavigationControllers。 SKStoreProductViewController
显然不属于我的自定义类,因此无法获得样式。
在我看来,这是一个讨厌的,不洁净的修复,但它确实有效。
麦克
答案 1 :(得分:0)
通过使用UIAppearance代理,您可以非常具体地了解这些项目的样式。 这个方法只有当它包含在特定的视图控制器类中时才应用样式。
有一个很好的教程here: