我需要在圆形图像上创建拱形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
相同的宽度和高度按钮
AnyKind of Help更受赞赏
答案 0 :(得分:4)
我只能回答最后一部分,
如果您能够获取按钮的图像,则可以参考this tutorial。这可能对你有帮助。提供,您的图像形成具有透明背景。
答案 1 :(得分: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];
}
试试这段代码。
答案 2 :(得分:1)
您可以改用UIImageView
。您可以为图片视图添加不同的tag
并添加Gesture Recognizer。现在,您可以在图像视图上获得触摸事件,例如按钮单击事件。
答案 3 :(得分:1)
如果所有按钮的图像看起来都像(相同方向),则转换值可能有效。
button.transform = CGAffineTransformMakeRotation(2*M_PI-angleSize*j);
button.center = CGPointMake(radius + radius * sin(angleSize * j) / 2, radius + radius * cos(angleSize * j) / 2);