随着即将发布的iPhone X,我希望能够显示一个不同的UI布局为iPhone X(由于圆角和底线,这有点像家按钮替换)。
我使用以下nuget包检索模型信息:https://github.com/dannycabrera/Get-iOS-Model
它的工作非常好,但所有不同的模拟器(iPhone 7,8,X)只是作为模拟器。
在我的Xamarin移动应用程序中,有办法区分代码中不同的iPhone模拟器吗?
非常感谢,尼克
发布于 2017-09-28 05:25:17
由于模拟器是一种奇怪的动物,因此屏幕大小与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;
}
}发布于 2017-09-28 04:45:08
您应该简单地使用安全区布局指南,它将自动增加iPhone X上的上/下边距。
发布于 2017-09-28 22:23:12
正如其他人指出的那样,您肯定应该使用安全区布局指南。
如果您确实需要检测模型,那么请查找SIMULATOR_MODEL_IDENTIFIER环境变量。iPhone X将返回iPhone10,3。
let model = ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"]
https://stackoverflow.com/questions/46461020
复制相似问题