删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用
Posted
技术标签:
【中文标题】删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用【英文标题】:Remove border top, change font family,.... not working in Xamarin iOS latest version 【发布时间】:2021-12-08 05:23:26 【问题描述】:在我的 Xamarin ios 应用程序中,我试图隐藏顶部边框并更改 TabbedPage 的字体系列。对于 Xamarin 版本 5.0.0.2021,它可以正常工作。但是,当我将 Xamarin 版本更新为 5.0.0.2244 时,它似乎不起作用?这里一定有什么不寻常的地方。这就是我更改字体 Family 和 Border Top TabbedPage 的方式:
MyTabbedPageRenderer
更改图标大小、字体大小、字体系列,... TabbedPage
[assembly: ExportRenderer(typeof(TabbedPage), typeof(MyTabbedPageRenderer))]
....
public class MyTabbedPageRenderer : TabbedRenderer
protected override void OnElementChanged(VisualElementChangedEventArgs e)
base.OnElementChanged(e);
TabBar.TintColor = UIColor.Gray;
TabBar.BarTintColor = UIColor.White;
TabBar.BackgroundColor = UIColor.White;
public override void ViewWillAppear(bool animated)
base.ViewWillAppear(animated);
if (TabBar?.Items == null)
return;
foreach (var item in TabBar.Items)
item.Image = ScalingImageToSize(item.Image, new CGSize(30, 30)); // set the size here as you want
var tabs = Element as TabbedPage;
if (tabs != null)
for (int i = 0; i < TabBar.Items.Length; i++)
UpdateTabBarItem(TabBar.Items[i]);
private void UpdateTabBarItem(UITabBarItem item)
if (item == null)
return;
// Set the font for the title.
item.SetTitleTextAttributes(new UITextAttributes() Font = UIFont.FromName("Quicksand Regular", 12), TextColor = Color.FromHex("#808080").ToUIColor() , UIControlState.Normal);
item.SetTitleTextAttributes(new UITextAttributes() Font = UIFont.FromName("Quicksand Regular", 13), TextColor = Color.FromHex("#00AA13").ToUIColor() , UIControlState.Selected);
...
移除顶部 TabbedPage 的边框
AppDelegate
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
UITabBar.Appearance.BackgroundImage = new UIImage();
UITabBar.Appearance.ShadowImage = new UIImage();
UITabBar.Appearance.SelectedImageTintColor = UIColor.FromRGB(0, 170, 19);
LoadApplication(new App());
我尝试重建项目,重新启动所有内容,但它似乎不适用于 Xamarin 版本 5.0.0.2244。请求帮忙。谢谢。
【问题讨论】:
【参考方案1】:iOS 15 有一些 api 变化,所以我们需要改变方式。
移除顶部边框
TabBar.ClipsToBounds = true;
更改项目的字体和文本颜色
private void UpdateTabBarItem(UITabBarItem item)
if (item == null) return;
if(UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
UITabBarAppearance app = new UITabBarAppearance();
app.ConfigureWithOpaqueBackground();
app.BackgroundColor = UIColor.Clear;
app.StackedLayoutAppearance.Normal.TitleTextAttributes = new UIStringAttributes() Font = UIFont.FromName("GillSans-UltraBold", 12), ForegroundColor = Color.FromHex("#00FF00").ToUIColor() ;
app.StackedLayoutAppearance.Selected.TitleTextAttributes = new UIStringAttributes() Font = UIFont.FromName("GillSans-UltraBold", 20), ForegroundColor = Color.FromHex("#FF0000").ToUIColor() ;
item.StandardAppearance = app;
if (UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
item.ScrollEdgeAppearance = item.StandardAppearance;
在我这边测试过,效果很好。
参考
https://***.com/a/69361301/8187800.
【讨论】:
以上是关于删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用的主要内容,如果未能解决你的问题,请参考以下文章