shell 标题视图中的额外填充 (IOS)

问题描述 投票:0回答:1

使用 shell 标题视图时,仅在 IOS 中标题视图下方会出现额外的填充空间。

在此输入图片描述

TitleView 代码

<Shell.TitleView>
        <Grid ColumnDefinitions="*,2*" Margin="0" Padding="0">
            <Image x:Name="ecolabLogo" AutomationId="ecolabLogoId" Source="logo.png" HeightRequest="23" HorizontalOptions="Start" />
            <Image x:Name="logOutImage" AutomationId="logOutImageId" Grid.Column="1" Source="logout.png" HeightRequest="26" HorizontalOptions="End" Margin="0,0,10,0" >
                <Image.GestureRecognizers>
                    <TapGestureRecognizer NumberOfTapsRequired="1" Command="{Binding LogOutCommand}" />
                </Image.GestureRecognizers>
            </Image>
        </Grid>
    </Shell.TitleView>

有人可以给我解决方案来删除 shell 标题视图(IOS)下面的额外空格吗?

就像我们可以使用 iOSShellRenderer 来做到这一点,因为我尝试将内容页面的填充和边距(也是 -ve 边距)设置为 0,但它不起作用。

ios shell maui navbar titleview
1个回答
0
投票

这是一个已知问题:登录到 Github 的 iOS #6735 上的 TitleView 下的下划线错误。

作为替代解决方法,您可以使用

Handlers 删除 TitleView

 下的行。

以下代码供您参考:

CustomShellHandler.cs

internal class CustomShellHandler : ShellRenderer { protected override IShellNavBarAppearanceTracker CreateNavBarAppearanceTracker() => new CustomShellNavBarAppearanceTracker(this, base.CreateNavBarAppearanceTracker()); }

CustomShellNavBarAppearanceTracker.cs

internal class CustomShellNavBarAppearanceTracker : IShellNavBarAppearanceTracker { readonly IShellContext _context; readonly IShellNavBarAppearanceTracker _baseTracker; public CustomShellNavBarAppearanceTracker(IShellContext context, IShellNavBarAppearanceTracker baseTracker) { _context = context; _baseTracker = baseTracker; } public void Dispose() => _baseTracker.Dispose(); public void ResetAppearance(UINavigationController controller) => _baseTracker.ResetAppearance(controller); public void SetAppearance(UINavigationController controller, ShellAppearance appearance) { var navBar = controller.NavigationBar; var navigationBarAppearance = new UINavigationBarAppearance(); navigationBarAppearance.ConfigureWithTransparentBackground(); navigationBarAppearance.ShadowColor = UIColor.Clear; navigationBarAppearance.BackgroundColor = UIColor.Clear; navigationBarAppearance.BackgroundEffect = null; navBar.ScrollEdgeAppearance = navBar.StandardAppearance = navigationBarAppearance; } public void SetHasShadow(UINavigationController controller, bool hasShadow) => _baseTracker.SetHasShadow(controller, hasShadow); public void UpdateLayout(UINavigationController controller)=> _baseTracker.UpdateLayout(controller); }
最后一步,在 

MauiProgram.cs

 中注册处理程序:

.ConfigureMauiHandlers(handlers => { #if IOS handlers.AddHandler<Shell, CustomShellHandler>(); #endif }); ;
    
© www.soinside.com 2019 - 2024. All rights reserved.