UINavigationBar的外观和Facebook张错误(UINavigationBar app

2019-10-18 02:06发布

我用我的appdelegate下面的代码:

UINavigationBar *navigationBar = [UINavigationBar appearance];
[navigationBar setBackgroundImage:[[UIImage imageNamed:@"top_bar"] stretchableImageWithLeftCapWidth:5 topCapHeight:5] forBarMetrics:UIBarMetricsDefault];
[navigationBar setBackgroundImage:[[UIImage imageNamed:@"top_bar_scape"] stretchableImageWithLeftCapWidth:5 topCapHeight:5] forBarMetrics:UIBarMetricsLandscapePhone];

一切工作正常,但我有一个奇怪的错误,当我打开iOS6的Facebook的共享,表,打开观众列表(或专辑列表并不重要):在导航栏呈现与我top_bar形象。 见下面的屏幕:

< - 正常没有我的外观变化 < - 我的外观变化巴吉

任何想法如何避免这种错误吗? 谢谢! :)

Answer 1:

用做外观上的变化UIAppearance方法是全局-这意味着它们生效无处不在 。 这是非常非常有帮助还是非常非常讨厌。

你可以尝试解决这个问题的方法之一是使用两种

[[UINavigationBar appearanceWhenContainedIn:...

或者,你可以把导航栏的自定义子类 ,并且只适用于它的外观变化:

[[MYNavigationBar appearance] setSomething:aThing];


Answer 2:

外观设置应用到所有你定义设置后所显示的控件。 所以你的情况在每个导航栏将使用背景图片。 您可以通过更改外观设置(黑色)之前,你把那应该有黑色导航栏,并设置回你弹出与黑色导航视图控制器前视图控制器解决您的问题。 我也有类似的问题,我的项目和我上面提到的解决了这个问题。

PS对不起,任何拼写错误和缺乏源代码,我是在路上,我从我的手机打字;)



文章来源: UINavigationBar appearance and Facebook-Sheet Bug