c# - 在 MonoTouch 中获取没有 UI 的 iOS 屏幕分辨率

标签 c# ios user-interface xamarin.ios uikit

问题是:如何在没有 UI 线程的情况下在 iOS MonoTouch(如 UIScreen.MainScreen.Bounds)中获得屏幕分辨率? 属性 .MainScreen 抛出异常

UIKit Consistency error: you are calling a UIKit method that can only be invoked from the UI thread.

因此我需要一个 UI 线程。但是由于在加载应用程序之前需要解析,在 UIApplication.Main() 被调用之前,UIApplication.mainThread(私有(private)成员,由调试器显示)是 。我假设根本没有 UI 线程,因为没有 UI。所以我在技术上不能在任何对象上调用 InvokeOnMainThread

没有UIScreen.MainScreen,有没有其他方法可以获取屏幕分辨率?如果没有,我将不得不将初始化移动到从 UI 调用的一些代码。然后还有另一个问题:如何从任意线程获取任何 UI 对象(调用 InvokeOnMainThread)?我无法控制 UI 代码。

最佳答案

UI 线程检查是 optional并且可以全局或局部禁用。后面的(本地)选项似乎符合您的需要。

以下代码将关闭检查、获取边界并重新启用检查(如果之前已启用)。

bool check_ui = UIApplication.CheckForIllegalCrossThreadCalls;
UIApplication.CheckForIllegalCrossThreadCall = false;
var screen_bounds = UIScreen.MainScreen.Bounds;
UIApplication.CheckForIllegalCrossThreadCalls = check_ui;

关于c# - 在 MonoTouch 中获取没有 UI 的 iOS 屏幕分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15660781/

相关文章:

C#、Linq2Sql : Is it possible to concatenate two queryables into one?

ios - 如何将键盘工具栏添加到 SwiftUI 中的特定文本字段?

python - Matplotlib 与 wxPython PopupMenu 的合作

c# - 我应该使用泛型来简化我的配置提供程序类吗?

javascript - 在有和没有更新面板的页面加载中运行功能

ios - 在 App Store 上的应用程序中使用 itms-services 链接

user-interface - Autohotkey中的GUI窗口定位

ios - 模拟 iPhone 应用程序中的选项卡

c# - 对象数组未按预期交付

ios - 如何使用 Swift 分别设置 iOS 图表中饼图的每种颜色?