5

UIButtons我需要在圆形图像上创建拱形。(O/p 需要看起来像同心圆),

目前我正在使用 5 张图像,但将来我可能会添加更多图像,动态我需要用添加的图像填充圆形图像。

我有一段示例代码,O/P 是下图

int numberOfSections = 6;
    CGFloat angleSize = 2*M_PI/numberOfSections;
 for (int j = 0; j < numberOfSections; ++j) {
        UIButton *sectionLabel = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 150.0f, 2.0f)];
sectionLabel.backgroundColor = [UIColor redColor];
 sectionLabel.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
        sectionLabel.layer.position = CGPointMake(container.bounds.size.width/2.0, container.bounds.size.height/2.0); // places anchorPoint of each label directly in the center of the circle.
        sectionLabel.transform = CGAffineTransformMakeRotation(angleSize*j);
        [container addSubview:sectionLabel];
    }

以上代码的图像

我试过这段代码,O/P 是下图

 int numberOfSections = 5;
    CGFloat angleSize = 2*M_PI/numberOfSections;
    for (int j = 0; j<numberOfSections; ++j) {
        UIImage *imageframe = [imagesArray objectAtIndex:j];
OBShapedButton *button = [[OBShapedButton alloc] initWithFrame:CGRectMake(0.0f, 150.0f, 150.0f, 128.0f)];
button.transform = CGAffineTransformMakeRotation(angleSize*j);
[container addSubview:button];
}

第二张图片

我需要如下图所示的输出 第三张图片

我怎样才能做到这一点

我尝试了 Sarah Zuo 的代码后的 O/P

萨拉佐码

相同宽度和高度的按钮Sarah Zuo 代码第二个答案
AnyKind of Help 更受赞赏

4

4 回答 4

4

我只能回答最后一部分,

如果您能够获取按钮的图像,那么您可以参考本教程。这可能会帮助你。前提是您形成的图像具有透明背景。

于 2012-09-25T09:47:22.330 回答
2
float radius = container.bounds.size.width / 2;
int numberOfSections = 5;
CGFloat angleSize = 2*M_PI/numberOfSections;
for (int j = 0; j<numberOfSections; ++j) {
    UIImage *imageframe = [imagesArray objectAtIndex:j];
    OBShapedButton *button = [[OBShapedButton alloc] initWithFrame:CGRectMake(0.0f, 150.0f, 150.0f, 128.0f)];

    button.transform = CGAffineTransformMakeRotation(2*M_PI-angleSize*j);
    button.center = CGPointMake(radius + radius * sin(angleSize * j) / 2, radius +  radius * cos(angleSize * j) / 2);
    [container addSubview:button];
}

试试这个代码。

于 2012-09-25T09:57:57.537 回答
1

您可以改用您的UIImageView。您可以给不同tag的图像视图并添加Gesture Recognizer。现在您可以在图像视图上获得触摸事件,例如按钮单击事件。

于 2012-09-25T09:18:29.893 回答
1

如果所有按钮的图像看起来都像一个(相同方向),则变换值可能有效。

button.transform = CGAffineTransformMakeRotation(2*M_PI-angleSize*j);
button.center = CGPointMake(radius + radius * sin(angleSize * j) / 2, radius +  radius * cos(angleSize * j) / 2);

按钮切片

于 2012-09-26T06:12:29.843 回答