【发布时间】:2019-09-02 21:44:07
【问题描述】:
我正在尝试自定义一个 imagebutton 以在特定设备上使用特定图像,对于 android 将显示一个图像,而在 iOS 中它将使用自定义渲染器显示另一个图像
我已经完成了 Android 端,但注意到 iOS 使用不同的成员变量,而不仅仅是在 android 端使用的“this.SetBackground(Some Resource)”。
namespace FlipXamarin.Controls
{
public class FingerPrintLabel : ImageButton
{
public FingerPrintLabel()
{
}
}
}
Android
[assembly: ExportRenderer(typeof(FingerPrintLabel), typeof(FingerPrintLabelRenderer))]
namespace FlipXamarin.Droid.Renderers
{
public class FingerPrintLabelRenderer : ImageButtonRenderer
{
public FingerPrintLabelRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<ImageButton> e)
{
base.OnElementChanged(e);
this.SetBackground(Resources.GetDrawable(Resource.Drawable.fingerprint_2x));
}
}
}
iOS
[assembly: ExportRenderer(typeof(FingerPrintLabel), typeof(FingerPrintLabelRenderer))]
namespace FlipXamarin.iOS.CustomRenderers
{
public class FingerPrintLabelRenderer : ImageButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<ImageButton> e)
{
base.OnElementChanged(e);
///if(iOS.version == 8) show fingerprint icon
///if(iOS.version == 10 and) show FaceId icon
}
}
}
Android 应该只显示一个指纹图标,而 iOS 将显示一个指纹或 faceId 图标。
【问题讨论】:
-
真的有必要使用自定义渲染器吗? Device helper 类将让您在运行时确定平台和版本,因此您可以在共享表单代码中设置适当的图像。
标签: c# ios xamarin xamarin.forms imagebutton