Xamarin Forms - IOS - 汉堡菜单标题颜色与状态栏不同
Posted
技术标签:
【中文标题】Xamarin Forms - IOS - 汉堡菜单标题颜色与状态栏不同【英文标题】:Xamarin Forms - IOS - Hamburger Menu Header color differs from Status Bar 【发布时间】:2018-10-03 10:58:00 【问题描述】:我在 Xamarin Forms 应用程序中添加了一个汉堡菜单。问题是对于 ios 设备,当单击菜单时,状态栏颜色不会像 android 那样根据菜单标题颜色而改变。下面的图片可以看出区别。
这是母版页:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyProject.UI.Pages.Menu.MainPage"
xmlns:pages="clr-namespace:MyProject.UI.Pages.Menu"
xmlns:calendar="clr-namespace:MyProject.UI.Pages.Calendar;assembly=MyProject"
Title="Main">
<MasterDetailPage.Master>
<pages:HamburgerMenu x:Name="MasterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<calendar:CalendarPage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
IOS Hamburger menu, Android Hamburger menu
【问题讨论】:
【参考方案1】:对于 android,它是 Statusbar 的默认颜色,即默认显示,您可以在 Styles.xml
文件夹下的 Styles.xml
文件中找到类似 <item name="colorPrimaryDark">#4286f4</item>
的颜色。
您可以手动更改 iOS 的状态栏颜色: 在 LoadApplication 之前将此代码写入您的 AppDelegate.cs 文件中
var statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
if (statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
statusBar.BackgroundColor = UIColor.FromRGB(66, 134, 244);
statusBar.TintColor = UIColor.White;
希望这能解决您的问题。
【讨论】:
以上是关于Xamarin Forms - IOS - 汉堡菜单标题颜色与状态栏不同的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms Android 保留汉堡包/菜单图标而不是后退按钮
Xamarin.Forms Shell 在汉堡菜单中将 Flyout Menu 与 MenuItem 组合并排序