Фоновое изображение панели инструментов Xamarin iOS - PullRequest
0 голосов
/ 17 января 2020

Мне нужно поместить изображение в качестве фона на панели инструментов в Xamarin Forms в проекте iOS с главной страницей сведений и панелью навигации (чтобы кнопка возврата программного обеспечения была в iOS). На android это работает хорошо, но на iOS недостаточно. Я использую этот код в AppDelegate.cs:

UINavigationBar.Appearance.SetBackgroundImage(new UIImage("toolbar_iOS.jpg"), UIBarPosition.Any, UIBarMetrics.Default);

Я поместил здесь изображение с рисунком 400x125 пикселей (меньше ширины - справа отображается 1 изображение и часть второго изображения, больше пикселей - изображение увеличено) , Я хочу, чтобы изображение отображалось как заливка, потому что на странице под панелью инструментов у меня одно и то же изображение с рисунком, и я хочу, чтобы они точно такого же размера соответствовали рисунку.

Второй способ - поместить изображение в макет стека в Xamarin.Forms в NavigationPage.TitleView. Я могу изменить аспект, но изображение отображается только примерно в 70% области панели инструментов (оно обходит значок гамбургера и строку состояния), поэтому это не очень хорошо.

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Layout.xxx.Views.MainMenuPage"
             xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
             xmlns:ffimageloadingsvg="clr-namespace:FFImageLoading.Svg.Forms;assembly=FFImageLoading.Svg.Forms"
             xmlns:pages="clr-namespace:Layout.xxx.Views">
    <MasterDetailPage.Master>
        <pages:MainMenuPageMaster x:Name="MasterPage"/>
    </MasterDetailPage.Master>
    <MasterDetailPage.Detail>
        <NavigationPage>
            <x:Arguments>
                <pages:MainMenuPageDetail x:Name="DetailPage">
                    <NavigationPage.TitleView>
                        <Grid>
                            <ffimageloading:CachedImage Margin="-50,-30,0,0" Grid.Row="0" Source="background.jpg" Aspect="AspectFill" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
                            <StackLayout Grid.Row="0" VerticalOptions="Center" HorizontalOptions="FillAndExpand">
                                <StackLayout.Margin>
                                    <OnPlatform x:TypeArguments="Thickness" iOS="-35,0,0,0" Android="-60,0,0,0"/>
                                </StackLayout.Margin>
                                <ffimageloadingsvg:SvgCachedImage Margin="0" Source="logo_svg.svg" Aspect="AspectFit" HeightRequest="40" VerticalOptions="Center" HorizontalOptions="Center" />
                            </StackLayout>
                        </Grid>
                    </NavigationPage.TitleView>
                </pages:MainMenuPageDetail>
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Detail>
</MasterDetailPage>

Отрицательные поля не помогают. Есть ли другой способ управления изображением панели инструментов в iOS?

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Если вы установили HasBackButton="False" для страницы, которая должна охватывать весь экран, просто вам придется реализовать кнопку «Назад» или кнопку гамбургера самостоятельно.

0 голосов
/ 17 января 2020
Use this code snippet , may help

<ContentPage>
<NavigationPage.TitleView>
    <StackLayout Orientation="Horizontal" VerticalOptions="Center" Spacing="10">
        <Image Source="iconXamagon.png">
            <Image.GestureRecognizers>
                <Image.TapGestureRecognizer
                    Tapped="HandleTapped" />
            </Image.GestureRecognizers>
        </Image>
        <Label Text="3.2.0" FontSize="16" TextColor="Black" VerticalTextAlignment="Center" />
    </StackLayout>
</NavigationPage.TitleView>
....
...