[英]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.