使用googleland中的技术,我将iOS状态栏文本设置为白色。除iPhone XR可以将文本设置为黑色外,其他方法均能正常工作。
我找到的用于处理此问题的技术都是Swift和Objective C相关的。 Xamarin.Forms的技术是什么?
我在plist中
基于这个相关问题Status Bar Text Color on iPhone XR is different,我尝试了
但这会将所有iOS设备状态栏变成黑色,包括XR。然后讨论一些我不知道Xamarin中类似物的Swift代码。
基于此相关问题, https://forums.xamarin.com/discussion/89840/change-status-bar-color-on-ios
它很近,但是它改变了条的背景色。我在statusBar对象上找不到任何涉及文本颜色的属性。
基于此相关问题, https://forums.xamarin.com/discussion/17922/navigationpage-statusbar-color
使用SetStatusBarStyle也不影响XR。
注意:我没有使用NavigationPage
答案 0 :(得分:0)
您非常接近。看来您需要为此使用自定义渲染器。在ViewController中,您将对以下三个枚举shown here中的任何一个重写PreferredStatusBarStyle函数:
public override UIStatusBarStyle PreferredStatusBarStyle()
{
return UIStatusBarStyle.LightContent;
}
答案 1 :(得分:0)
带有NavigationController的Swift 4.2解决方案
第一步:
打开您的info.plist,然后将名为“基于控制器的视图的状态栏外观” 或 UIViewControllerBasedStatusBarAppearance 的新密钥插入 YES 以允许每个VC都使用自己的状态属性。
第二步
在每个VC中,覆盖这样的preferredStatusBarStyle属性:
override var preferredStatusBarStyle : UIStatusBarStyle {
return .lightContent //.default for black style
}
最后一步
覆盖自定义NavigationController类中的preferredStatusBarStyle属性:
`class NavigationController:UINavigationController {
覆盖var preferredStatusBarStyle:UIStatusBarStyle {
if let topVC = viewControllers.last {
//return the status property of each VC, look at step 2
return topVC.preferredStatusBarStyle
}
return .default
} `
答案 2 :(得分:0)
我知道我们现在不应该使用UIStatusBarStyle
。但它确实可以在XR模拟器上的iOS 12.2上运行。我在我的info.plist中添加了密钥:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
使用代码更改颜色也可以:
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;
您可以利用它来动态调整状态栏样式。
不过,为您指定的页面创建custom renderer是另一种选择。首先,在info.plist中将UIViewControllerBasedStatusBarAppearance
设置为true。
然后页面渲染器可能像:
[assembly: ExportRenderer(typeof(MainPage), typeof(CustomPageRenderer))]
namespace App.iOS
{
public class CustomPageRenderer : PageRenderer
{
public override UIStatusBarStyle PreferredStatusBarStyle()
{
return UIStatusBarStyle.LightContent;
}
}
}
MainPage
是表单上的内容页面类。然后将其设置为应用的MainPage
。