gpt4 book ai didi

c# - 在 Xamarin for iOS 中为 Imagebutton 设置图像

转载 作者:行者123 更新时间:2023-11-29 13:54:14 25 4
gpt4 key购买 nike

我正在尝试自定义一个图像按钮以在特定设备上使用特定图像,Android 将显示一张图像,而在 iOS 中它将使用自定义渲染器显示另一张图像

我已经完成了 Android 端,但注意到 iOS 使用不同的 memeber 变量,而不仅仅是 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 图标。

Android Screen

最佳答案

正如@Jason 在评论中指出的那样,您不需要自定义渲染器来显示不同的图像,因为您可以使用 Device 从共享项目中执行所有这些操作辅助类。

但是,为了回答您的问题,如果您想更新 ImageButton 的图像来自CustomRenderer在 iOS 中你可以这样做:

//Do your validation as you wish, this was just an example.
var image = UIDevice.CurrentDevice.CheckSystemVersion(10, 0)
? UIImage.FromBundle("facescan.jpg")
: UIImage.FromBundle("fingerprint.jpg");

//The Control property is an UIButtton
Control?.SetImage(image?.ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), UIControlState.Normal);

关于c# - 在 Xamarin for iOS 中为 Imagebutton 设置图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57762950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com