Нахождение массива индексов объектов на экране - PullRequest
1 голос
/ 28 марта 2012

У меня есть круговая диаграмма, состоящая из 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 ]

1 голос
/ 28 марта 2012

Если вы используете UIImageView для показа всех изображений, то Вот мой ответ вам поможет . Что вам нужно сделать, это setTag для отдельного UIImageView. Он будет идентифицировать тронутый UIImageView. Его тег будет индексировать ваш массив, и вы также можете передать его в NSArray, чтобы получить значение из него.

0 голосов
/ 28 марта 2012

Используйте цикл for, чтобы узнать, к какому UIView прикасались

UIView *selectedPie;

for (UIView *pie in slicesArray) {

 if(CGRectContainsPoint(pie.frame, point)) {

selectedPie = pie;
break;

    }

}

, а затем масштабируйте выбранный пирог.Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...