iPhone:Позиционирование в точку на изображении с любого уровня масштабирования (преобразования)

StackOverflow https://stackoverflow.com/questions/551083

  •  23-08-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top