首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone模拟器(检测不同的设备模拟器)

iPhone模拟器(检测不同的设备模拟器)
EN

Stack Overflow用户
提问于 2017-09-28 04:31:38
回答 3查看 626关注 0票数 2

随着即将发布的iPhone X,我希望能够显示一个不同的UI布局为iPhone X(由于圆角和底线,这有点像家按钮替换)。

我使用以下nuget包检索模型信息:https://github.com/dannycabrera/Get-iOS-Model

它的工作非常好,但所有不同的模拟器(iPhone 7,8,X)只是作为模拟器。

在我的Xamarin移动应用程序中,有办法区分代码中不同的iPhone模拟器吗?

非常感谢,尼克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-28 05:25:17

由于模拟器是一种奇怪的动物,因此屏幕大小与iOS版本的其他测试以及物理设备上的FaceID可用性测试一样好:

代码语言:javascript
复制
public bool iPhoneX()
{
    var version = new Version(ObjCRuntime.Constants.Version);
    if (version < new Version(11, 0))
        return false;
    if (ObjCRuntime.Runtime.Arch == ObjCRuntime.Arch.DEVICE)
    {
        using (var context = new LocalAuthentication.LAContext())
        {
            if (context.BiometryType == LABiometryType.TypeFaceId)
                return true;
        }
        return false;
    }
    if (UIScreen.MainScreen.PreferredMode.Size.Height == 2436)
        return true;
    return false;
}

或用于重复(绑定)调用的优化属性:

代码语言:javascript
复制
static bool? iPhoneX;
public bool isPhoneX
{
    get
    {
        if (iPhoneX == null)
        {
            if (new Version(ObjCRuntime.Constants.Version) < new Version(11, 0))
                iPhoneX = false;
            else
            {
                if (ObjCRuntime.Runtime.Arch == ObjCRuntime.Arch.DEVICE)
                {
                    using (var context = new LocalAuthentication.LAContext())
                    {
                        iPhoneX = context.BiometryType == LABiometryType.TypeFaceId;
                    }
                }
                else
                    iPhoneX = UIScreen.MainScreen.PreferredMode.Size.Height == 2436;
            }
        }
        return (bool)iPhoneX;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-09-28 04:45:08

您应该简单地使用安全区布局指南,它将自动增加iPhone X上的上/下边距。

票数 0
EN

Stack Overflow用户

发布于 2017-09-28 22:23:12

正如其他人指出的那样,您肯定应该使用安全区布局指南

如果您确实需要检测模型,那么请查找SIMULATOR_MODEL_IDENTIFIER环境变量。iPhone X将返回iPhone10,3

let model = ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46461020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档