繁体   English   中英

如何使用Device.OnPlatform翻译此填充? (iOS案例)

[英]How to translate this Padding with Device.OnPlatform? (iOS cases)

因此,我现在正通过一本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);

new Thickness(5, 5, 5, 5); 具有4个double参数意味着将创建一个新的填充(在这种情况下),左侧为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 ://docs.microsoft.com/zh-cn/xamarin/xamarin-forms/xaml/markup-extensions/consumption#onplatform-markup-extension

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM