KeiStory

.NET MAUI Platform(Android/iOS)에 따라 처리하는 방법

 

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);
        }

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band