[英]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
帶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.