Android, iOS 에 따라서 코드 분기가 필요할 때가 있습니다.
Xamarin 에서도 기기적 특성으로 인해 사용한 적이 많았는데 이 부분은 Xamarin 껄 그대로 가져왔습니다.
xaml 단에서 사용방법은 OnPlatform 태그를 사용합니다.
<OnPlatform> 테그를 쓰거나 직접 값을 지정할때 x:OnPlatform 을 사용하는 방식으로 사용됩니다.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp1.NewPage"
xmlns:syncfusion="clr-namespace:Syncfusion.Maui.ListView;assembly=Syncfusion.Maui.ListView"
Title="NewPage"
Padding="10,10,10,100"
BackgroundColor="White">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0, 10, 0, 0" />
<On Platform="Android" Value="10, 10, 10, 10" />
</OnPlatform>
</ContentPage.Padding>
<StackLayout >
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0, 10, 0, 0" />
<On Platform="Android" Value="10, 10, 10, 10" />
</OnPlatform>
</StackLayout.Margin>
<Label Text="Kei Soft 강준 (https://github.com/kei-soft)"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
TextColor="{x:OnPlatform iOS=Black, Android=Blue, UWP=Gray}"/>
<Button x:Name="sfListViewButton" Text="SfListView" Clicked="sfListViewButton_Clicked"/>
</StackLayout>
</ContentPage>
위 코드를 보면 <OnPlatform> 테그를 이용해 Margin 을 Platform 에 따라 다른 값을 주고 있으며
x:OnPlatform 를 이용해 값 설정할 때 TextsColor 를 Platform 에 따라 다른 값으로 처리하도록 합니다.
Code 단에서는 아래처럼 Device.RuntimePlatform 으로 구분하여 Platform 에 따라 처리가 가능합니다.
if (Device.RuntimePlatform == Device.Android)
{
Padding = new Thickness(0, 10, 0, 0);
}
else if (Device.RuntimePlatform == Device.iOS)
{
Padding = new Thickness(10, 10, 10, 10);
}
.NET MAUI xaml 단에서 x:DataType 과 BindingContext 의 차이점 (0) | 2024.04.26 |
---|---|
.NET MAUI Handler 사용하는 방법 (0) | 2024.04.26 |
.NET MAUI x:Reference 사용하기 (0) | 2024.04.26 |
.NET MAUI x:static 사용하기 (0) | 2024.04.26 |
.NET MAUI Image/Font 추가하기 (0) | 2024.04.26 |