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

ios – UINavigationBar UIToolBar UIAppearance以及应用程序某些部分的半透明barStyle?,第1张

概述我正在使用以下代码为我的UINavigationBar和UIToolbar设置自定义图像: [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar"] forBarMetrics:UIBarMetricsDefault];[[UIToolbar appearance] setBack 我正在使用以下代码为我的UINavigationbar和UIToolbar设置自定义图像:

[[UINavigationbar appearance] setBackgroundImage:[UIImage imagenamed:@"navigationbar"] forbarMetrics:UIbarMetricsDefault];[[UIToolbar appearance] setBackgroundImage:[UIImage imagenamed:@"toolbar"] forToolbarposition:UIToolbarpositionAny barMetrics:UIbarMetricsDefault];

我正在使用PhotoViewer并将其视图控制器推入视图中.它应该有一个半透明的导航栏和工具栏,但它使用我提供的图形半透明.

问题是,稍后当我推入另一个视图控制器(从PhotoVIEwerd回超级)后,它的工具栏也是半透明的,这意味着内容就在它后面.

没有运气,我尝试了以下内容:

[[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并保留其他所有我的自定义图形?

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

解决方法 我已下载您的示例项目并设法修复它.我会解释问题所在.

首先,UINavigationbar包含在UINavigationController中.因此,RootVIEwController和TranslucentVIEwController使用相同的UINavigationbar实例.也许这会引起混乱.此外,这可能就是为什么外观以下内容无法按预期工作.

要在整个应用程序中设置导航栏的背景图像,您应该使用外观.要在导航控制器中设置单个导航栏的背景图像,请使用UINavigationbar的-setBackgroundImagE:forbarMetrics :.

代码:in -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];}

在TranslucentVIEwController中

- (voID)vIEwWillAppear:(BOol)animated {[super vIEwWillAppear:animated];    [self.navigationController.navigationbar setBackgroundImage:nil forbarMetrics:UIbarMetricsDefault];    [self.navigationController.navigationbar setbarStyle:UIbarStyleBlackTranslucent];}

哦,并且:只在这些地方改变它.不是在推动视图控制器或任何东西时.

总结

以上是内存溢出为你收集整理的ios – UINavigationBar UIToolBar UIAppearance以及应用程序某些部分的半透明barStyle?全部内容,希望文章能够帮你解决ios – UINavigationBar UIToolBar UIAppearance以及应用程序某些部分的半透明barStyle?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1052030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存