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