Как установить фоновый узор для большого UIScrollView (который прокручивается вместе с представлением) - PullRequest
1 голос
/ 03 февраля 2012

Похоже, очень простая проблема!Но у меня большие трудности.

Мои идеи и попытки пока:

  1. scrollView.backgroundColor = [UIColor colorWithPatternImage:myImage]]
    • Не прокручивается ссодержимое
  2. Создайте UIView размер contentSize (на самом деле, больше из-за упругих отскоков при просмотре прокрутки) и используйте шаблон, как указано выше в этом сабевид UIScrollView.
  3. Аналогично (2), за исключением того, что я только создаю UIView размер максимального количества повторений фонового изображения, которое будет видно, и ловко перемещаю вид туда, где это необходимо дляпоказать правильные повторения фона.
    • Заставляет этот фоновый вид неожиданно смещаться влево и вправо при анимации прокрутки.
  4. Создать UIView подкласси переопределить drawRect.Используйте различные основные графические приемы для рисования контента вручную.
    • Не анимация.Реализация собственного свойства contentOffset не является стандартным свойством Core Animation.
    • Переопределение drawRect on UIScrollView не учитывает смещение содержимого и не вызывается несколько раз при прокрутке / анимации.Параметр rect всегда является просто границами UIScrollView.
  5. Как и в (4), за исключением того, что я установил bounds.origin моего UIViewподкласс в моей реализации setContentOffset, так как это свойство с возможностью анимации.
    • drawRect , кажется, не вызывается каждый кадр.
  6. Используйте CATiledLayer, как предлагаетсяв этом ответе: Большой UIScrollView с фоновым шаблоном завершается неудачей .Подробности реализации здесь: http://www.cimgf.com/2011/03/01/subduing-catiledlayer/.
    • Я действительно не хочу, чтобы уродство видеть асинхронное рисование плиток в качестве пользовательских прокруток.Это просто фоновый рисунок!

Это кажется самой простой вещью!Почему это так сложно!?

1 Ответ

1 голос
/ 03 февраля 2012

Может быть, пример кода: ScollViewSuit-> 3_Tiling может помочь вам. Вы можете найти его в официальном документе.

Это работает как CATiledLayer, но используется только UIKit, плитка была загружена в основной поток.

И я действительно не думаю, что это хорошее решение.

...