Перерисовать текст в увеличенном UIImageView после увеличения - PullRequest
3 голосов
/ 23 января 2012

У меня есть приложение для iOS, которое сводится к следующему:

  • Контроллер представления, который реализует все методы UIScrollViewDelegate.
  • Настроенный UIImageView, который являетсяпредставление, возвращаемое viewForZoomingInScrollView в первом контроллере представления.

В методе drawRect настраиваемого UIImageView я накладываю некоторый текст в различных позициях на изображении, текст может быть на разныхразмеры и углы, ограниченные прямоугольником, определяемым точками на изображении.Таким образом, система координат все относится к изображению, связанному с UIImageView.

Иногда текст должен быть визуализирован в области, которые слишком малы, чтобы позволить тексту быть читаемым по умолчаниюУровень масштабирования.

Однако, когда я увеличиваю масштаб, это не делает текст более читабельным, поскольку текст был отрисован на оригинальном UIImageView с размером шрифта, соответствующим заданным границам.

Мне бы хотелось, чтобы какой-то способ перерисовать этот текст, в правильном месте, с пропорционально большим размером шрифта при увеличении. Возможно ли это, и как бы я это сделал?

Ответы [ 3 ]

2 голосов
/ 24 октября 2012

Вместо того, чтобы пытаться это исправить, я бы сказал, что ваш дизайн немного неправильный.Я бы перестроил это так, чтобы вы отображали все содержимое, отображаемое при максимальном желаемом увеличении, и затем позволяли бы прокрутке прокрутки увеличивать / уменьшать готовое содержимое, указав параметры масштабирования.В противном случае вы сойдете с ума, пытаясь исправить текст.Просто нарисуйте все изображение / документ настолько большим, насколько вы хотите, а затем добавьте ЭТО содержимое в представление прокрутки с небольшим увеличением, позволяя пользователю увеличивать / уменьшать масштаб по своему усмотрению.Тогда все готово.

2 голосов
/ 30 октября 2012

Вы можете написать свой оверлейный текст на UILabels, прикрепленный к представлению UIViewController.Затем вам нужно создать свой собственный класс из UIScrollView и переопределить

- (void)setContentOffset:(CGPoint)anOffset

здесь, используя anOffset и self.zoomScale, вы можете размещать ваши метки в нужных местах, с подходящим размером шрифта и всеми остальными.Таким образом, они будут менять свои позиции каждый раз, когда ваше прокручиваемое изображение перемещается или увеличивается.

2 голосов
/ 23 января 2012

Я сам работал над масштабируемой планировкой и справился с ней довольно просто.

Я помещаю свой текст в метки и помещаю эти метки поверх ImageView. При масштабировании надписей масштабируйте с помощью UIImageView и, следовательно, текста в масштабе.

При слишком большом увеличении текст становится размытым и размытым, поэтому вы можете обновить эти текстовые метки в:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale

Для меня этого было достаточно, я надеюсь, что это может быть так и для вас.

...