我正在使用新概念AppShell,并且我正在执行以下流程
App.MainPage = new AppShell();
Run Code Online (Sandbox Code Playgroud)
那我就做
protected async override void OnStart()
{
await Shell.Current.GoToAsync($"//{nameof(LoginPage)}");
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我有一个 ForgetPasswordPage,来自 LoginViewModel 我做
await Shell.Current.GoToAsync($"//{nameof(ForgetPasswordPage)}");
Run Code Online (Sandbox Code Playgroud)
重点是如果我这样做
var color = new Color(33, 150, 243);
Xamarin.Essentials.Platform.CurrentActivity.Window.SetStatusBarColor(color);
Run Code Online (Sandbox Code Playgroud)
在 Android 的 Create 方法中,StatusBar 具有我定义的颜色。那么iOS的方法在哪里呢?
我尝试了这些解决方案
没有成功...
有人可以解释如何更改状态代码,但我想将其设置在我的 ContentPage 中,我可以使用样式或像这样的简单代码行
Xamarin.Essentials.Platform.CurrentActivity.Window.SetStatusBarColor(颜色);
Android项目中使用的。
我按照其他帖子中的步骤进行操作,得到:
Foundation.MonoTouchException: '抛出 Objective-C 异常。名称:NSInternalInconsistencyException 原因:应用程序在 UIApplication 上调用了 -statusBar 或 -statusBarWindow:必须更改此代码,因为不再有状态栏或状态栏窗口。请改用窗口场景上的 statusBarManager 对象。本机堆栈跟踪:0 CoreFoundation 0x00007fff20422fba __exceptionPreprocess + 242
System.Reflection.TargetInitationException Message=调用目标已引发异常
您可以在这里观看我的视频,其中详细介绍了:https://www.youtube.com/watch?v =GKJRR8_DSSs
一般来说:
安卓 -
public void SetStatusBarColor(System.Drawing.Color color, bool darkStatusBarTint)
{
if (Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.Lollipop)
return;
var activity = Platform.CurrentActivity;
var window = activity.Window;
window.AddFlags(Android.Views.WindowManagerFlags.DrawsSystemBarBackgrounds);
window.ClearFlags(Android.Views.WindowManagerFlags.TranslucentStatus);
window.SetStatusBarColor(color.ToPlatformColor());
if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
{
var flag = (Android.Views.StatusBarVisibility)Android.Views.SystemUiFlags.LightStatusBar;
window.DecorView.SystemUiVisibility = darkStatusBarTint ? flag : 0;
}
}
Run Code Online (Sandbox Code Playgroud)
iOS:
public void SetStatusBarColor(System.Drawing.Color color, bool darkStatusBarTint)
{
if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
{
var statusBar = new UIView(UIApplication.SharedApplication.KeyWindow.WindowScene.StatusBarManager.StatusBarFrame);
statusBar.BackgroundColor = color.ToPlatformColor();
UIApplication.SharedApplication.KeyWindow.AddSubview(statusBar);
}
else
{
var statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
if (statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
{
statusBar.BackgroundColor = color.ToPlatformColor();
}
}
var style = darkStatusBarTint ? UIStatusBarStyle.DarkContent : UIStatusBarStyle.LightContent;
UIApplication.SharedApplication.SetStatusBarStyle(style, false);
Xamarin.Essentials.Platform.GetCurrentUIViewController()?.SetNeedsStatusBarAppearanceUpdate();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |