无法在Xamarin.iOS中设置状态栏背景

问题描述 投票:0回答:1

我需要在Xamarin.iOS(不是表单)中更改状态栏UI,其中背景为黑色,文本颜色为白色。为此,我想自定义状态栏视图,在互联网上搜索了所有内容,并在下面找到了适用于大多数人的代码。

var statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
//tried with key statusBarWindow.statusBar as well.
statusBar.BackgroundColor = ...;

上面的代码在Xamarin.iOS中崩溃(在iPhone Xs模拟器上测试)。这是崩溃的日志。

在/Library/Frameworks/Xamarin.iOS.framework/Versions/的Foundation.NSObject.ValueForKey(Foundation.NSString键)[0x0001c]中的(包装器托管到本机)ObjCRuntime.Messaging.xamarin_IntPtr_objc_msgSend_IntPtr(intptr,intptr,intptr) 12.2.1.12/src/Xamarin.iOS/Foundation/NSObject.g.cs:599

任何人都可以帮我解决为什么这个代码在Xamarin中崩溃的原因。我试着在这个GitHub线程https://github.com/mono/Embeddinator-4000/issues/597上找到原因

但在这里我也无法得到任何线索。此外,如果有任何其他方式来自定义状态栏,我想放弃这个想法,并继续提出建议。

Refer here

xamarin.ios mono
1个回答
0
投票

据我所知,这可行,但通常当我使用它时,我总是检查选择器是否可用使用RespondsToSelector

UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
if (statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
{
    statusBar.BackgroundColor = UIColor.White;
}

另外,不要忘记将样式添加到info.plist

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

更新

AppDelegate.cs方法中使用FinishedLaunching中的上述代码。

© www.soinside.com 2019 - 2024. All rights reserved.