gpt4 book ai didi

ios - UINavigationBar + UIToolBar UIAppearance 以及应用程序某些部分的半透明 barStyle?

转载 作者:可可西里 更新时间:2023-11-01 05:41:57 24 4
gpt4 key购买 nike

我正在使用以下代码为我的 UINavigationBarUIToolbar 设置自定义图像:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar"] forBarMetrics:UIBarMetricsDefault];
[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"toolbar"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

我正在使用 PhotoViewer并将其 View Controller 插入 View 。它应该有一个半透明的导航栏和工具栏,但它使用了我提供的半透明图形。

问题是稍后当我插入另一个 View Controller 时(从 PhotoViewer 弹出回到 super 之后)它的工具栏也是半透明的,这意味着内容位于它后面。

我已经尝试过以下但没有运气:

[[UINavigationBar appearanceWhenContainedIn:[EGOPhotoViewController class], nil] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearanceWhenContainedIn:[EGOPhotoViewController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[[UIToolbar appearanceWhenContainedIn:[EGOPhotoViewController class], nil] setBarStyle:UIBarStyleBlackTranslucent];
[[UIToolbar appearanceWhenContainedIn:[EGOPhotoViewController class], nil] setBackgroundImage:nil forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

有什么想法可以 为 PhotoViewer 实现黑色半透明 barStyle 并使用我的自定义图形保留其他所有内容吗?

更新:为了获得一些帮助,我将一个示例项目与导航栏的自定义图形放在一起,然后尝试显示一个带有半透明导航栏的推送 View Controller 使用外观代理时没有成功:EXAMPLE PROJECT

最佳答案

我已经下载了您的示例项目并设法修复了它。我会解释问题所在。

首先,UINavigationBar 包含在 UINavigationController 中。因此,RootViewController 和 TranslucentViewController 使用相同的 UINavigationBar 实例。也许这会引起混淆。此外,这可能就是 +appearanceWhenContainedIn: 未按预期工作的原因。

要在整个应用程序中设置导航栏的背景图像,您应该使用 +appearance。要在导航 Controller 中设置单个导航栏的背景图像,请使用 UINavigationBar 的 -setBackgroundImagE:forBarMetrics:。

代码:在-TranslucentViewController viewWillAppear: 中设置背景图片和条形样式。在 RootViewController 中,重新设置背景图片和条形样式。根据我的经验,最好在 -viewWillAppear: 中更改导航栏,而不是 -in viewWillDisappear:(或者您需要跟踪将其改回的内容。)

在 RootViewController 中

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];

[self.navigationController.navigationBar setBarStyle:UIBarStyleDefault];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"orangeNavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
}

在半透明 View Controller 中

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];

[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
}

哦还有:只在这些地方改变它。不是在插入 View Controller 或任何东西时。

关于ios - UINavigationBar + UIToolBar UIAppearance 以及应用程序某些部分的半透明 barStyle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com