ios - 如何在 Xamarin 中以编程方式创建不规则按钮?

标签 ios c#-4.0 xamarin.ios

我正在尝试以编程方式为我的应用程序中的交互式元素创建按钮。该界面看起来像一个圆环图,如果用户触摸圆环图中的某个区域,它将突出显示该区域和所有其他区域。我现在不太关心颜色,我正在尝试让七个按钮出现。以下是我如何尝试创建按钮的代码示例:

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/

相关文章:

ios - 如何设置iOS雷达图的坐标轴选项?

ios - UIButton 左对齐图像和居中文本

c# - 如何获取计数并弹出消息框

C# MEF 不能做类型绑定(bind)?

ios - 错误 MT2002 : Failed to resolve assembly: 'System.Drawing'

ios - Segue 后向上滚动时 UITableView 滞后

html - 如何将 HTML 标签添加到 UITextView Swift Xcode 中的字符串

c# - 运算符 |= 在 C# 中是什么意思?

c# - 如何使用 MonoTouch 获取 iPhone/iPad 的宽度和高度?

objective-c - 无法创建 'FWSImageRepo' 类型的 native 实例。 native 类尚未加载