在屏幕上查找对象的数组索引

时间:2012-03-28 06:13:47

标签: iphone objective-c cocoa-touch math

我有一个由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);

此图像显示切片,黑色文本表示正确的索引编号,而白色文本表示上述代码返回的内容。

enter image description here

感谢您的帮助。

2 个答案:

答案 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。希望这有帮助