首页 > 解决方案 > iOS 加载覆盖不覆盖整个屏幕

问题描述

我试图在自动登录 HTTP 调用期间显示覆盖。我找到了这段代码,它似乎已经过时了,但没有发现任何更新的东西。

无论如何,覆盖显示但没有按预期覆盖整个屏幕。

调用代码是这样的:

AppDelegate.FinishedLaunching

var avc = new AutoLoginViewController();
var navController = new UINavigationController(avc);

AutoLoginViewController.ViewDidLoad

var bounds = UIScreen.MainScreen.Bounds;

// show the loading overlay on the UI thread using the correct orientation sizing
loadPop = new LoadingOverlay(bounds, NSBundle.MainBundle.GetLocalizedString("connecting"));
View.Add(loadPop);

但结果如下:

LoadOverlay 大小不正确

如果我在 LoadingOverlay 构造函数中设置断点,我可以看到屏幕边界(iPhone 6)很好:

{{X=0,Y=0,宽度=375,高度=667}}

public class LoadingOverlay : UIView
{
    public LoadingOverlay(CGRect frame, string text) : base(frame)
    {
       // configurable bits
       BackgroundColor = UIColor.Black;
       Alpha = 0.75f;
       AutoresizingMask = UIViewAutoresizing.FlexibleDimensions;
       ...
    }
}

显然 UIView 宽度不正确。

因为我们在 2020 年,也许还有另一种方式。

任何帮助表示赞赏。


编辑:该应用程序在 iPhone 8 iOS 13.3 模拟器上中断,所以我不能说这是否与特定的屏幕尺寸(在我的情况下为 1x)有关。

标签: c#iosxamarin.ios

解决方案


原因 :

貌似你没有设置LaunchImage,所以无论是模拟器还是真机,bounds的值都是静态值。

解决方案:

最简单的方法是将覆盖的大小设置为 View 的边界。

var bounds = View.Bounds;

或者您可以设置不同屏幕的 LaunchImage 的所有尺寸。


推荐阅读