我对 Xamarin 很陌生,我目前正在开发一个 Xamarin.iOS 项目,我在 Xcode 中添加了按钮。如果我想以相同的方式设置某些按钮的样式,而不必在代码中重复自己,我该怎么做?我可以创建一个类或特定按钮可以继承的东西吗?
回答1
如果我想以相同的方式设置某些按钮的样式而不必在代码中重复自己,我该怎么做?我可以创建一个类或特定按钮可以继承的东西吗?
答:这可以通过Custom Renderer
来实现。
首先,在您的共享项目中,创建一个基类:
CustomButton.cs
public class CustomButton : Button
{
}
然后,在您的 iOS 项目中,创建一个自定义渲染器:
[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]
namespace App26.iOS
{
public class CustomButtonRenderer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
// Cleanup
}
if (Control != null)
{
//set custom style here
Control.TitleShadowOffset = new CoreGraphics.CGSize(1, 1);
Control.SetTitleShadowColor(Color.Black.ToUIColor(), UIKit.UIControlState.Normal);
Control.BackgroundColor = UIColor.Green;
Control.Title(UIControlState.Selected);
}
}
}
}
最后但同样重要的是,使用您的自定义按钮,如下所示:
<local:CustomButton/>
MS 官方文档链接:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/