7

我一直在使用梦幻般[[UINavigationBar appearance] set...的为我的 UI 设置应用程序范围的外观。但是,我正在使用SKStoreProductViewController并希望删除我的所有样式,以便它显示默认的 Apple UI。奇怪的是,什么都不做,我得到了一个混杂的普通 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 设置?

问候,
迈克

4

2 回答 2

9

好吧,我不得不求助于一个讨厌的小解决方法来解决这个问题。虽然我一直都知道这将是一种方法,但我不想求助于它,因为它感觉很乱。

我将其分类UINavigationController为类似的东西,CustomNavigationViewController并且完全没有对其进行任何更改。换句话说,它是UINavigationController但名称不同。然后我用:

[[UINavigationBar appearanceWhenContainedIn:[CustomNavigationViewController class], nil] set.... 设置外观,仅将其应用于我的自定义类的那些 NavigationControllers。显然不是我的SKStoreProductViewController自定义类,因此没有得到它的样式。

在我看来,这是一个令人讨厌的、不干净的修复,但它确实有效。

麦克风。

于 2013-05-18T22:45:01.023 回答
0

通过使用 UIAppearance 代理,您可以非常具体地设置这些项目的样式。这有一个方法,仅当它包含在特定的视图控制器类中时才应用样式。

这里有一个很好的教程:

于 2013-05-16T15:33:15.583 回答