iPhone: позиционирование в точку на изображении с любого масштаба (трансформации) - PullRequest
1 голос
/ 15 февраля 2009

У меня есть простой UIImageView с изображением, которое больше, чем дисплей (600x1400). Изображение начинается с Fit to Aspect, поэтому границы отчета UIImgageView 320x750, все еще больше, чем дисплей, но это нормально. Я знаю точку (300, 150) относительно исходных размеров изображения (600x1400), которую я хочу масштабировать и позиционировать. Если я настрою базовую анимацию для обработки положения и масштаба (масштабирование, преобразование) с помощью базовой анимации, масштабирование произойдет, но я никогда не окажусь в нужной точке. Вместо этого кажется, что я должен вычислить точку, основываясь на шкале, которую Я БУДУ сразу преобразовать.

Есть ли что-то очевидное, что я упускаю? Я пытался использовать convertPoint: toView, но он всегда возвращает ту же точку, которую я только что дал.

1 Ответ

0 голосов
/ 16 февраля 2009

Да, когда вы устанавливаете источник представления, вы устанавливаете его в координатном пространстве его суперпредставления. Суперпредставление ничего не знает о масштабе подпредставления, поэтому, если вам нужно перейти к координате относительно масштабированного размера изображения, вам нужно масштабировать координату, чтобы соответствовать. Математика для этого проста, но вы можете использовать функцию CGPointApplyAffineTransform (), чтобы получить CGAffineTransform, который вы, возможно, использовали для масштабирования UIImageView через его свойство transform и применить его к координате. (Кроме того, помните, что координата 0,0 находится в верхнем левом углу на iPhone.) Я не уверен, будет ли масштабирование UIImageView в соответствии с масштабированием выполнено масштабированием через его свойство transform или нет, но вы можете легко построить аффинное преобразование в соответствии с текущим масштабом вашего представления.

Тем не менее, я бы посоветовал вам изменить размер изображения до меньшего разрешения, чтобы сэкономить память и повысить производительность. 600x1400 - это довольно большое изображение для iPhone. В этом посте есть несколько советов о том, как масштабировать UIImages. Если вы примените известный масштабный коэффициент к своему изображению, вы можете просто применить этот масштабный коэффициент к компонентам X и Y желаемой координаты.

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