У меня есть UIView
внутри UIScrollView
. Когда изменяется масштаб UIScrollView
, я хочу перерисовать весь UIView
на новом уровне масштабирования.Перерисовывать содержимое UIScrollView после каждого масштабирования
В прошивкой < 3.2, я делал это путем изменения размера UIView
внутри UIScrollView
, чтобы сделать его новый размер, а затем установить преобразование обратно в идентичности, так что он не будет пытаться изменить его дальше. Однако при iOS> = 3.2 изменение идентификатора также изменяет свойство zoomScale UIScrollView
.
Результатом является то, что всякий раз, когда я масштабирую (скажем, 2x), я настраиваю встроенный UIView
на соответствующий размер и перерисовываю его. Однако теперь (с тех пор, как я сбросил преобразование в Identity), UIScrollView
снова думает об этом в zoomScale 1, а не zoomScale 2. Поэтому, если у меня есть maxXoomScale, установленный на 2, он все равно попытается увеличить масштаб, что неверно.
Я думал об использовании CATiledLayer
, но я не думаю, что этого достаточно для меня, так как я хочу перерисовывать после каждого масштабирования, а не только с определенными порогами масштабирования, как это делается.
Кто-нибудь знает, как сделать правильную перерисовку UIView
при масштабировании?
Большое вам спасибо за ваше решение! Это решает [мой вопрос] (http://stackoverflow.com/questions/3970988/how-to-draw-on-a-non-transformed-context-while-zoomed-in-a-catiledlayer). Не могли бы вы оставить ссылку на свой ответ там, чтобы я мог дать вам должное ответить на него? – TinkerTank
Если этот метод используется для увеличения CATiledLayer, кеш-фрагмент необходимо очистить до вызова setNeedsDisplay. Доступно решение для очистки CATiledLayerCache [здесь] (http: // stackoverflow.com/questions/1274680/clear-catiledlayers-cache-when-change-images) – TinkerTank
Не могли бы вы объяснить свойство contentSize и то, как он будет установлен и что это на самом деле. Спасибо – BDGapps