У меня проблема, и я надеюсь, что вы можете мне с ней помочь. Кстати, это для iPad.
У меня есть UIScrollView, UIImageView, CAShapeLayer и CGMutablePathRef.
1- Итак, я загрузил изображение в UIImageView
2- Затем я проанализировал все пути из файла, затем добавил их в CAShapeLayer (s), т.е. каждый CAShapeLayer является путем.
3- Затем я добавил все CAShapeLayer (s) в UIImageView.layer
4. Я выполнил шаг 3, чтобы использовать приведенную ниже функцию, чтобы вернуть представление, содержащее изображение и пути. Это помогает масштабировать пути и изображение вместе.
- (UIView *)viewForZoomingInScrollView: (UIScrollView *)scrollView
{
return myUIImageView;
}
5- Затем я добавил UIImageView в UIScrollView.
6- Затем я разделил UIScrollView на подклассы, чтобы можно было прикоснуться к началу и т. Д.
* Примечание. Все мои события касания, такие как touchBegan, могут обнаруживать все пути, когда я нажимаю на них, используя CGPathContainsPoint (aLayer.path, & transf, touchPoint, NO). Кроме того, я могу прокручивать вид после масштабирования, и он отлично работает.
* Теперь проблема:
Всякий раз, когда я увеличиваю / уменьшаю масштаб, CAShapeLayer (s) масштабируются нормально, но кажется, что (исходные координаты путей) не масштабируются, или, по крайней мере, я так считаю. Я говорю это, потому что, когда я нажимаю на CAShapeLayer (s), они не отвечают, но когда я нажимаю на их исходное место или близко к тому месту, где показан CAShapeLayer, я получаю ответ CAShapeLayer.
Я попытался собрать все CAShapeLayer (ы) в массив, стереть их из представления и снова добавить, но ничего не изменилось. Я пробовал и другие вещи, например, попытаться масштабировать CAShapeLayer (s) отдельно, добавив CAShapeLayer (s) в UIScrollView вместо UIImageView. Затем я получаю текущую примененную шкалу и применяю ее ко всем CAShapeLayer (-ам), но это не дало хорошего результата.
-Проверьте прикрепленные скриншоты. Надеюсь, они помогут.
Надеюсь, вы можете мне помочь, заранее спасибо.
* Перед масштабированием изображения: http://imageshack.us/photo/my-images/193/beforescaling.jpg/
* После масштабирования изображения: http://imageshack.us/photo/my-images/818/afterscaling.jpg/
** Отредактировано:
-Потенциальные решения:
1- Возможно, мне нужно обновить CATransform3DIdentity CAShapeLayer. Однако пока не знаю, как это сделать.
2- Возможно, мне нужно использовать CATransform3DTranslate, но я еще не знаю, как им пользоваться.