我需要在Xamarin上实现这个效果。iOS上的一个按钮(所以只是图像中带圆角的蓝色按钮),基本上只是把按钮的任何一个角弄圆,但不是一次把所有的都弄圆。我不喜欢使用另一个nuget包,比如“煎饼”,我认为这是一个答案。iOS上有什么平台特定的定制来匹配Android吗?
我设法在ANDROID上实现了这一点,如下所示:
public class DroidCustomButtonRenderer : ButtonRenderer
{
public DroidCustomButtonRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Forms.Button> e)
{
base.OnElementChanged(e);
if (Control != null)
{
GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.SetColor(global::Android.Graphics.Color.ParseColor(AppConstants.Constants.CUSTOM_BACK_BUTTON_COLOR_NEW));
float[] radius = new float[8];
radius[0] = 0; //Top Left corner
radius[1] = 0; //Top Left corner
radius[2] = 46f; //Top Right corner
radius[3] = 46f; //Top Right corner
radius[4] = 46f; //Bottom Right corner
radius[5] = 46f; //Bottom Right corner
radius[6] = 0; //Bottom Left corner
radius[7] = 0; //Bottom Left corner
gradientDrawable.SetCornerRadii(radius);
Control.SetBackground(gradientDrawable);
}
}
}
请问我如何在iOS上实现同样的效果?
public class iOSCustomButtonRenderer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
// ?
}
}
2条答案
按热度按时间abithluo1#
您可以在iOS课程中使用MaskedCorners来控制图形的显示。
以下是我的实现类,供您参考:
p1iqtdky2#
上面的答案有效,但如果有人想改变所有的角落,必须包括
CoreAnimation.CACornerMask.MinXMinYCorner|CoreAnimation.CACornerMask.MinXMaxYCorner
为“MaskedCorners”。