繁体   English   中英

XR状态栏文本仍为黑色,但不是iPhone 8或iPad

[英]XR status bar text remains black, but not iPhone 8 or iPad

使用googleland中的技术,我已将iOS状态栏文本设置为白色。 这适用于iPhone XR,它将文本设置为黑色。

我找到的处理这个的技术都是Swift和Objective C相关的。 Xamarin.Forms的技术是什么?

在plist我有

  • 状态栏样式=白色
  • 查看基于控制器的状态栏外观=否

基于这个相关的问题, iPhone XR上的状态栏文本颜色是不同的 ,我试过

  • 查看基于控制器的状态栏外观=是

但这会将所有iOS设备状态栏变为黑色,包括XR。 然后它讨论了一些Swift代码,我不知道Xamarin中的模拟代码。

基于这个相关问题, 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

你很亲密。 您似乎需要使用自定义渲染器。 在ViewController中,您将PreferredStatusBarStyle函数覆盖到此处显示的三个枚举中的任何一个,如下所示:

public override UIStatusBarStyle PreferredStatusBarStyle()
{
    return UIStatusBarStyle.LightContent;
}

带NavigationController的Swift 4.2解决方案

第一步:

打开你的info.plist并插入一个名为“基于控制器的视图状态栏外观”UIViewControllerBasedStatusBarAppearance让每个VC用自己的状态属性新的密钥。

第二步

在每个VC中,覆盖preferredStatusBarStyle属性,如下所示:

override var preferredStatusBarStyle : UIStatusBarStyle { return .lightContent //.default for black style }

最后一步

覆盖自定义NavigationController类中的preferredStatusBarStyle属性:

`class NavigationController:UINavigationController {

override var preferredStatusBarStyle:UIStatusBarStyle {

if let topVC = viewControllers.last {
    //return the status property of each VC, look at step 2
    return topVC.preferredStatusBarStyle  
}

return .default

}

我知道我们现在不应该使用UIStatusBarStyle 但它在我的XR模拟器上适用于iOS 12.2。 我在info.plist中添加了密钥:

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>

状态栏的文本更改为白色: 在此输入图像描述

使用代码更改颜色也可以正常工作:

UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;

您可以使用它来动态调整状态栏样式。

但是,为指定页面创建自定义渲染器是另一种选择。 首先,在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是Forms上的内容页面类。 我将它设置为App的MainPage

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM