Xamarin表单iOS - Carrier Bar背景颜色在Detail上更改,而不是Master

时间:2016-08-30 13:10:43

标签: xamarin xamarin.ios xamarin.forms master-detail

我有一个MasterDetail页面,Detail是Naviagtion页面,Master包含Listview。我正在使用

更改标题栏背景颜色和文本的颜色
((NavigationPage)Detail).BarBackgroundColor = Color.Navy;
((NavigationPage)Detail).BarTextColor = Color.White;

这会将“主”和“细节”部分的载体栏文本更改为白色,但仅更改“细节”部分的载体栏背景,“主”仍为白色/透明,因此文本不再可见。这是一个错误吗?我希望条形变量的工作方式相同,只能在导航页面上工作,因为那是他们应用的页面。

注意 - 我没有将StatusBarStyle设置为LightContent,内容页面上的状态栏在白色背景上显示为黑色文本。

iOS Carrier Bar

*编辑 - 我希望它看起来像这样 - CarrierBarText颜色仅在导航页面上发生变化:

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为这是预期的行为而不是错误。 iOS状态栏是半透明的,但“详细信息”页面上的导航栏会延伸到窗口顶部,因此状态栏看起来像是一种颜色。

主页面也会延伸到窗口的顶部,因此当它被推入视图时,顶部的20px会显示在状态栏下,在这种情况下,它只是页面的背景。您可以将页面背景更改为Navy以匹配导航栏,使其看起来更加一致。

答案 1 :(得分:0)

在Xamarin.Forms中更改iOS状态栏颜色的唯一方法是设置BarTextColor的{​​{1}}。 NavigationPage页面必须是Detail,因此他们可以设置NavigationPage属性。 由于BarTextColor页面不是Master,因此它没有NavigationPage属性,也无法更改iOS状态栏颜色。

我的建议是将BarTextColor页面的背景颜色更改为深色(如海军蓝),以便iOS状态栏中的白色文字仍然可见。

詹姆斯·蒙特马戈(James Montemago)做了一篇很棒的博客文章,讨论了如何设置iOS状态栏颜色: http://motzcod.es/post/110755300272/ios-tip-change-status-bar-icon-text-colors

  

如果您使用的是Xamarin.forms,还必须在NavigationPage上设置BarTextColor = Color.White!此外,您应该进入info.plist并将“查看基于控制器的状态栏外观”设置为否