随着即将发布的iPhone X,我希望能够为iPhone X显示不同的UI布局(由于圆角和底线,有点像主页按钮替换)。
我正在使用以下nuget包来检索模型信息: https://github.com/dannycabrera/Get-iOS-Model
它工作得非常好,但所有不同的模拟器(iPhone 7,8,X)只能作为模拟器出现。
有没有办法区分我的Xamarin移动应用程序中的代码中的不同iPhone模拟器?
非常感谢, NIK
答案 0 :(得分:1)
由于模拟器是一种奇怪的动物,因此在iOS版本的其他测试和物理设备上FaceID的可用性之后,屏幕尺寸与任何其他测试一样好:
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;
}
或重复(绑定)调用的优化属性:
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 :(得分:0)
您应该只使用Safe Area Layout Guide,它会自动增加iPhone X的上/下边距。
答案 2 :(得分:0)
正如其他人所指出的,你绝对应该使用Safe Area Layout Guide。
如果您确实需要检测模型,请查找SIMULATOR_MODEL_IDENTIFIER
环境变量。 iPhone X将返回iPhone10,3
。
let model = ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"]