#iphone #uiscrollview #zooming
#iPhone #uiscrollview #масштабирование
Вопрос:
У меня есть изображение с несколькими частями. Я попытаюсь объяснить с помощью следующей диаграммы:
--|----------|---------|---
| 1 | 2 |
| | |
--|----------|---------|---
| 3 | 4 |
| | |
--|----------|---------|---
На приведенной выше диаграмме 1,2,3 и 4 представлены разделы большого изображения. Я использую UIImageView в UIScrollView. Я показываю пользователю по одной части за раз. Чтобы казалось, что разделы представляют собой отдельные изображения. Если я показываю раздел 3, я скрываю все части изображения, кроме раздела 3, и изменяю координату изображения таким образом, чтобы раздел 3 отображался в середине экрана. До сих пор все работает нормально. Теперь мне нужно реализовать масштабирование разделов. После масштабирования раздела пользователю будет разрешено прокручивать только внутри раздела, и им не будет разрешено прокручивать за пределами увеличенного раздела. Я не могу реализовать это так, как если бы я установил свойство contentoffset и contentsize для uiscrollview, оно выводит изображение с экрана.
Может кто-нибудь подсказать мне, как это реализовать?
Ниже приведен код, который я использую для позиционирования scrollview.
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
float updatedCurrFrameX = originalFrame.origin.x*[scroll zoomScale];
float updatedCurrFrameY = originalFrame.origin.y*[scroll zoomScale];
float updatedCurrFrameWidth = originalFrame.size.width*[scroll zoomScale];
float updatedCurrFrameHeight = originalFrame.size.height*[scroll zoomScale];
CGRect visibleRect=CGRectMake(updatedCurrFrameX, updatedCurrFrameY, updatedCurrFrameWidth, updatedCurrFrameHeight);
scroll.contentSize= visibleRect.size;
scroll.contentOffset=visibleRect.origin;
}
Ответ №1:
Реализовать UIScrollViewDelegate
, чтобы получать уведомления при увеличении масштаба пользователя ( scrollViewDidEndZooming:withView:atScale:
), затем действовать соответствующим образом, установив contentSize
и contentOffset
. Если вы не можете добиться желаемого эффекта путем настройки contentSize и offset, вы можете рассмотреть возможность изменения documentView в ScrollView при увеличении.