gpt4 book ai didi

ios - 如何在iOS的Xamarin表单中创建渐变按钮背景

转载 作者:行者123 更新时间:2023-12-01 16:28:17 25 4
gpt4 key购买 nike

我以Xamarin形式创建需要渐变按钮背景的iPhone应用程序。我已经尝试过CAGradientLayer。但是,它不适用于按钮。

谁能帮我解决这个问题?
这是我的按钮渲染器:

    protected override void OnElementChanged (ElementChangedEventArgs<Button> e)
{
base.OnElementChanged (e);

if(e.OldElement == null)
{

btn = (UIButton) Control;
btn.Frame = new RectangleF (0, 0, (float)this.Element.WidthRequest, (float)this.Element.HeightRequest);
CAGradientLayer btnGradient = new CAGradientLayer ();
btnGradient.Frame = btn.Bounds;
btnGradient.Colors = new CGColor[]{ Color.White.ToCGColor(), Color.FromHex("#0073BD").ToCGColor() };
btn.Layer.InsertSublayer (btnGradient, 0);
btn.Layer.MasksToBounds = true;
btn.Layer.BorderColor = Color.FromHex("#0073BE").ToCGColor();
btn.Layer.BorderWidth = 1;
btn.SetTitleColor(Color.Black.ToUIColor (), UIControlState.Normal);
}
}

最佳答案

我建议您先制作渐变图像,然后直接使用它们,除非您需要在运行时动态创建渐变。如果您走影像路线,那么您将执行以下操作:

var regImg = UIImage.FromBundle("myimage.png").ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
var selImg = UIImage.FromBundle("myimage_selected.png").ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);

Control.SetBackgroundImage(regImg, UIControlState.Normal);
Control.SetBackgroundImage(selImg, UIControlState.Highlighted);

如果您仍然想走动态创建的渐变路线,请看一下这篇文章-您会看到他正在通过创建的ImageWithColor()方法动态创建图像:

https://forums.xamarin.com/discussion/32240/set-buttontype-in-buttonrenderer-ios-specific

最后,请确保将按钮的ImageType设置为“自定义”-我看不到您在渲染器中进行设置,并且我相信默认情况下,iOS会在iOS7之后绘制无边界按钮。

关于ios - 如何在iOS的Xamarin表单中创建渐变按钮背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33892991/

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