我有一个示例Xamarin.Forms共享项目,我有一个MainPage.xaml。为了在iOS上实现材料设计外观,我正在尝试使用自定义渲染器为组件提供所需的外观。最近我发现了Xamarin.iOS的一些依赖项,可以做到这一点。
我想知道我需要做什么才能使用CustomRenderer从Xamarin.iOS依赖项中呈现一个组件。
这是我的iOS自定义渲染器:
[assembly: ExportRenderer (typeof(CustomEntry), typeof(CustomEntryRenderer))]
namespace MCTest.iOS
{
public class CustomEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
// do whatever
}
}
}
}
在这里我可以自定义条目,但真正想做的是从外部(nuget)依赖项渲染不同的组件。这可能吗 ?如果是这样,我怎么能做到这一点?感谢。
答案 0 :(得分:2)
您可以尝试在PCL中创建一个ContentPage,然后将其渲染器设为:
[assembly: ExportRenderer(typeof(MaterialPage), typeof(MaterialPageRenderer))]
namespace SpecialPageRenderer.iOS
{
public class MaterialPageRenderer : PageRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (Element != null)
{
var materialView = UIStoryboard.FromName("Main", null).InstantiateViewController("ViewController").View;
NativeView.AddSubview(materialView);
}
}
}
}
在这里,我在名为ViewController
的iOS项目上创建一个新的MaterialViewController。然后我可以在此渲染器中构建它,在NativeView
上添加其视图。最后,依赖控件将显示。