簡體   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