Xamarin 如何删除iOS上显示的选项卡栏上方的行
以下是我试图删除的内容。我以为它在早期的iOS中已经被删除了,但现在在13.3中我想它又回来了: 以下是我以前使用的渲染器代码:Xamarin 如何删除iOS上显示的选项卡栏上方的行,xamarin,xamarin.forms,Xamarin,Xamarin.forms,以下是我试图删除的内容。我以为它在早期的iOS中已经被删除了,但现在在13.3中我想它又回来了: 以下是我以前使用的渲染器代码: protected override IShellItemRenderer CreateShellItemRenderer(ShellItem item) { var renderer = base.CreateShellItemRenderer(item); (renderer as ShellItemRendere
protected override IShellItemRenderer CreateShellItemRenderer(ShellItem item)
{
var renderer = base.CreateShellItemRenderer(item);
(renderer as ShellItemRenderer).TabBar.Translucent = false;
(renderer as ShellItemRenderer).TabBar.ShadowImage = new UIImage(); // <<<<<<<
(renderer as ShellItemRenderer).TabBar.BackgroundImage = new UIImage();
UITabBar myTabBar = (renderer as ShellItemRenderer).TabBar;
foreach (var barItem in myTabBar.Items)
{
barItem.ImageInsets = new UIEdgeInsets(5, 0, 0, 0);
}
return renderer;
}
受保护的覆盖IShellItemRenderer CreateShellItemRenderer(ShellItem项目)
{
var renderer=base.CreateShellItemRenderer(项);
(渲染器作为ShellItemRenderer)。TabBar.Translucent=false;
(作为ShellItemRenderer的渲染器)。TabBar.ShadowImage=new UIImage();//这是
...
重写的方法CreateShellItemRenderer
现在无法获取Tabbar
,它将返回null
。因此代码无法工作
您可以覆盖CreateTabarAppearanceTracker以在iOS 13中获取Tabbar。如下所示:
[assembly: ExportRenderer(typeof(AppShellTab.AppShell), typeof(AppShellTab.iOS.MyShellRenderer))]
namespace AppShellTab.iOS
{
public class MyShellRenderer : ShellRenderer
{
protected override IShellTabBarAppearanceTracker CreateTabBarAppearanceTracker()
{
return new MyOtherTabBarAppearanceTracker();
}
public class MyOtherTabBarAppearanceTracker : ShellTabBarAppearanceTracker, IShellTabBarAppearanceTracker
{
void IShellTabBarAppearanceTracker.SetAppearance(UITabBarController controller, ShellAppearance appearance)
{
base.SetAppearance(controller, appearance);
var tabBar = controller.TabBar;
tabBar.BackgroundImage = new UIImage();
tabBar.ClipsToBounds = true;
//tabBar.Translucent = false;
}
}
}
}
其效果是:
抱歉,这不是我要删除的内容。您好,Junior,您提到“重写的方法CreateShellItemRenderer现在无法获取Tabbar”。您能帮我确认一下吗,因为我能够获取Tabbar,并且我使用的是最新的代码。可能是4.5版无法获取Tabbar。我尝试添加了“tabBar.clipstobunds=true;"正如你所建议的,效果很好。我想确认一下我的问题。非常感谢much@Alan2好的,上面的代码在16.4.5版本之前测试过,它可以工作。我会用最新的16.4.5版本检查它。好的是它工作得很好,如果有任何问题,那么我也会在我的代码中注释掉你的其他建议未来。非常感谢您的帮助。@Alan2好的,很高兴听到这个消息!如果其他问题也可以稍后分享。
[assembly: ExportRenderer(typeof(AppShellTab.AppShell), typeof(AppShellTab.iOS.MyShellRenderer))]
namespace AppShellTab.iOS
{
public class MyShellRenderer : ShellRenderer
{
protected override IShellTabBarAppearanceTracker CreateTabBarAppearanceTracker()
{
return new MyOtherTabBarAppearanceTracker();
}
public class MyOtherTabBarAppearanceTracker : ShellTabBarAppearanceTracker, IShellTabBarAppearanceTracker
{
void IShellTabBarAppearanceTracker.SetAppearance(UITabBarController controller, ShellAppearance appearance)
{
base.SetAppearance(controller, appearance);
var tabBar = controller.TabBar;
tabBar.BackgroundImage = new UIImage();
tabBar.ClipsToBounds = true;
//tabBar.Translucent = false;
}
}
}
}