我看到了这个指南:
https://developer.apple.com/ios/human-interface-guidelines/graphics/system-icons/
我想使用其中一些图标。有没有办法做到这一点,还是我必须搜索我自己的类似图标png并使用它们?
请注意,我可以使用自定义渲染器,如果这是我应该这样做的方式。我是Xamarin的新手,非常感谢有关如何做到这一点的任何建议。
以下是我的自定义渲染器的示例。但我仍然不明白如何使用系统图标:
FMDatabaseQueue
以下是我分配图标的方法。如果可能的话,我也想在自定义渲染器中执行此操作:
private void OnTabBarReselected(object sender, UITabBarSelectionEventArgs e)
{
//PhrasesFrameRendererClass frame = new PhrasesFrameRendererClass();
var tabs = Element as TabbedPage;
var playTab = tabs.Children[0];
if (TabBar.SelectedItem.Title == "Play")
{
if (tabs != null)
{
playTab.Title = "Pause";
playTab.Icon = "pause.png";
playTab.Icon = UITabBarSystemItem.Featured;
}
AS.runCardTimer = true;
}
else if (TabBar.SelectedItem.Title == "Pause")
{
if (tabs != null)
{
playTab.Title = "Play";
playTab.Icon = "play.png";
AS.phrasesFrame.SetTimerLabel("paused");
}
AS.runCardTimer = false;
}
}
答案 0 :(得分:1)
您的页面需要自定义渲染器。在我的示例中,它是CustomTabsPage类。您不能只使用系统图标来创建UIImage。我们需要使用UITabBarItem。问题是UITabBarItem不允许既不改变标题也不改变图像/图标。但我们可以从中复制图像。
using ButtonRendererDemo;
using ButtonRendererDemo.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(CustomTabsPage), typeof(CustomTabsPageRenderer))]
namespace ButtonRendererDemo.iOS
{
public class CustomTabsPageRenderer : TabbedRenderer
{
#region Sytem Image with custom title
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
foreach (var item in TabBar.Items)
{
item.Image = GetTabIcon(item.Title);
}
}
private UIImage GetTabIcon(string title)
{
UITabBarItem item = null;
switch (title)
{
case "Profile":
item = new UITabBarItem(UITabBarSystemItem.Search, 0);
break;
case "Settings":
item = new UITabBarItem(UITabBarSystemItem.Bookmarks, 0);
break;
}
var img = (item != null) ? UIImage.FromImage(item.SelectedImage.CGImage, item.SelectedImage.CurrentScale, item.SelectedImage.Orientation) : new UIImage();
return img;
}
#endregion
}
}