利用 Device.RuntimePlatform 属性,你可以为每个平台选择唯一值。 该属性可以从 OnPlatform 类中获得。 Device.RuntimePlatform 由 Xamarin.Forms 在运行时设置,以便你确定应用正在运行的 OS。 可以使用 Device 类来检查 Device.RuntimePlatform,并确定要执行的代码路径。
通过将页面顶部填充 20 个单位,即可使用此方法来解决显示问题。 iOS 状态栏的高度约为 20 个单位。 你的代码将类似于如下代码:
if (Device.RuntimePlatform == Device.iOS)
{
Padding = new Thickness(0, 20, 0, 0);
}
OnPlatform 类是 Xamarin.Forms 基础结构的一部分。 OnPlatform 使你可在 XAML 元素上设置属性,并可在运行时用于 iOS、Android 和其他受支持的 Xamarin.Forms 平台。 你指定其他值,然后,OnPlatform 会在运行时为你执行 switch 语句。 这只是一个类型转换器,可为运行时平台返回适当的值。
OnPlatform 为泛型类型。 必须指定 T 的类型。 在代码中指定类型很简单,但你的目标是从 XAML 指定类型,而不是从代码指定。 XAML 规范具有一种可使用 <x:TypeArguments /> 指令指定泛型类型参数的方法。 以下是设置布局背景色的示例:
<StackLayout.BackgroundColor>
<OnPlatform x:TypeArguments="Color">
<On Platform="iOS" Value="Silver" />
<On Platform="Android" Value="Green" />
</OnPlatform>
</StackLayout.BackgroundColor>
为 iOS 将顶部填充设置为 20 个单位。 你会再次使用 OnPlatform 对象。 在这种情况下,将填充的类型设置为 Thickness:
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android" Value="0,0,0,0" />
</OnPlatform>
</ContentPage.Padding>