我正在尝试以编程方式为我的应用程序中的交互式元素创建按钮。该界面看起来像一个圆环图,如果用户触摸圆环图中的某个区域,它将突出显示该区域和所有其他区域。我现在不太关心颜色,我正在尝试让七个按钮出现。以下是我如何尝试创建按钮的代码示例:
var radius = (Frame.Width - 38) / 2.0f;
var innerRadius = radius - 32;
var diameter = radius * 2;
energyCircleView = new UIView();
energyCircleView.BackgroundColor = UIColor.White;
energyCircleView.Frame = new RectangleF(19, confirmEntryButton.Frame.Top - 16 - (diameter), diameter, diameter);
energyCircleView.Layer.CornerRadius = radius;
energyCircleView.Layer.MasksToBounds = true;
var center = new PointF(energyCircleView.Frame.X + radius, energyCircleView.Frame.Y + radius);
var ninety = MathHelper.TwoPi * (90.0f / 360.0f);
var seventh = MathHelper.TwoPi * (1.0f / 7.0f) * 360.0f;
for (int i = 0; i < 7; i++)
{
var startAngle = ninety + (i * seventh);
var endAngle = ninety + ((i + 1) * seventh);
var shapePath = new CGPath();
shapePath.AddArc(center.X, center.Y, radius, startAngle, endAngle, false);
shapePath.AddArc(center.X, center.Y, innerRadius, endAngle, startAngle, true);
var shapeLayer = new CAShapeLayer();
shapeLayer.Path = shapePath;
var button = new UIButton();
button.Frame = new RectangleF(0, 0, diameter, diameter);
button.BackgroundColor = MyColors[i];
button.Layer.Mask = shapeLayer;
button.Layer.MasksToBounds = true;
energyButtons.Add(button);
}
foreach (UIButton button in energyButtons)
{
energyCircleView.AddSubview(button);
}
最佳答案
您正在添加按钮作为 View 的 subview 。但您不显示 View 本身。
添加以下代码以显示 energyCircleView:
this.View.AddSubview(energyCircleView);
关于ios - 如何在 Xamarin 中以编程方式创建不规则按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641945/