我有一个由12个切片组成的饼图,它们都在一个数组中。我们的想法是能够触摸任何特定切片,在阵列中接收其正确的索引位置,并上下切割该切片。我完成了切片的创建,以及缩放,但是选择正确索引背后的数学让我感到难过。
当前代码(slicesArray = 12)我返回的索引号不正确:
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
int index = atan2f(point.x-self.view.center.x, point.y-self.view.center.y) * self.slicesArray.count / (2*M_PI);
此图像显示切片,黑色文本表示正确的索引编号,而白色文本表示上述代码返回的内容。
感谢您的帮助。
答案 0 :(得分:1)
如果您使用UIImageView显示所有图像,则Here's my answer will help you。 您需要做的是为单个UIImageView设置setTag。它将识别触摸的UIImageView。它的标记将为您的数组编制索引,您也可以将其传递给NSArray以从中获取值。
答案 1 :(得分:0)
使用for循环找出正在触摸的UIView
UIView *selectedPie;
for (UIView *pie in slicesArray) {
if(CGRectContainsPoint(pie.frame, point)) {
selectedPie = pie;
break;
}
}
然后缩放selectedPie。希望这有帮助