簡體   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