Xamarin/C#跨平台适配:如何根据iOS版本调整SkiaSharp尺寸参数
解决方案
你可以直接在代码中先判断当前iOS系统的版本号,再根据版本阈值调整size参数即可,不同开发框架的实现方式如下:
原生Xamarin.iOS / .NET for iOS 实现
直接调用系统UIDevice的版本校验API判断:
int size; // 校验系统版本是否大于等于13.0 if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0)) { size = Math.Min(180, 180); } else { // iOS11及更低版本调整为适配尺寸,数值可根据实际显示效果修改 size = Math.Min(120, 120); }
你可以先运行看iOS11设备的实际显示效果,再微调调整后的尺寸数值
Xamarin.Forms / .NET MAUI 跨平台实现
用跨平台设备信息API做判断,兼容多平台逻辑:
int size; if (DeviceInfo.Platform == DevicePlatform.iOS && DeviceInfo.Version >= new Version(13,0)) { size = Math.Min(180, 180); } else if (DeviceInfo.Platform == DevicePlatform.iOS) { size = Math.Min(120, 120); } else { // 其他平台保持原有逻辑即可 size = Math.Min(180, 180); }
如果想要从根源解决版本适配问题,可以额外检查下当前SkiaSharp的绘制逻辑是否绑定了设备渲染缩放系数SKCanvas.DeviceClipBounds.DeviceScaleX做单位转换,iOS11到iOS13之间系统对绘制单位的解析逻辑存在小的差异,未做DPI适配的硬编码像素值容易出现不同版本显示不一致的问题。
内容的提问来源于stack exchange,提问作者Avatar
相关产品推荐
相关产品推荐

