gpt4 book ai didi

c# - 如何用 Device.OnPlatform 翻译这个 Padding? (iOS 案例)

转载 作者:行者123 更新时间:2023-11-28 20:54:54 30 4
gpt4 key购买 nike

所以我现在正在阅读一本 xamarin.forms 的书,我遇到了这个:

 Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5);

Device.OnPlatform 收到一条警告,表明它已过时。

我知道我可以翻译

Padding = Device.OnPlatform(new Thickness(0,20,0,0),
new Thickness(0),
new Thickness(0));

        switch (Device.RuntimePlatform)
{
case Device.iOS:
Padding = new Thickness(0, 20, 0, 0);
break;
};

但是这里到底发生了什么,我该如何翻译呢?

Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5);

最佳答案

具有 4 个 double 参数的 new Thickness(5, 5, 5, 5); 意味着它将创建一个新的填充(在本例中),其中包含 5 个左边,5个在上面,5个在右边,5个在下面。因此,从左到右,您只需顺时针方向从左侧开始。

我们看到第二个参数(即顶部填充)会因平台而异。从我的头顶开始,我不确定什么参数是什么平台,但我猜第一个是 iOS。现在发生的情况是,左边的内边距为 5,而顶部的内边距因平台而异。对于 iOS,它将是 20,而对于 Android 和 UWP(记住,只是一个猜测)它仍然是 5。然后右边和底部的填充没有改变,所以它们仍然是 5。

如果你想在代码中严格地做到这一点,它可能会转化为这样的东西:

double topPadding = 5;

switch (Device.RuntimePlatform)
{
case Device.iOS:
topPadding = 20;
break;
default:
topPadding = 5;
break;
};

Padding = new Thickness(5, topPadding, 5, 5);

当然,您可以添加一些不同的案例或更改值,完全由您决定。

您也可以使用 XAML 来完成。它可能看起来像这样:

<YourControl Padding="{OnPlatform '5,5,5,5', iOS='5,20,5,5'}" />

YourControl 是您要应用它的控件。 OnPlatform 之后的第一个 '5,5,5,5' 值是所有未指定平台的默认值。 iOS 已指定,因此将使用为其指定的值。在此处阅读有关 OnPlatform 扩展的更多信息:https://learn.microsoft.com/en-us/xamarin/xamarin-forms/xaml/markup-extensions/consuming#onplatform-markup-extension

关于c# - 如何用 Device.OnPlatform 翻译这个 Padding? (iOS 案例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53479248/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com