Как я могу поместить UIView без прокрутки под индикаторами прокрутки на UIScrollView? - PullRequest
1 голос
/ 03 апреля 2012

У меня есть приложение, в котором я использую масштабирующий scrollView для обрезки изображения до прямоугольника с фиксированным соотношением сторон. У меня есть маска, где я затемняю части изображения, которые будут обрезаны. В настоящее время я добавляю это подпредставление к родителю UIScrollView, делая их родными братьями, где эта маска 'выше', чем представление прокрутки. Выглядит отлично. За исключением ...

Эта маска также маскирует scrollIndicators и поэтому выглядит немного глупо. Я мог бы отключить scrollIndicators или, в идеале, я бы хотел поместить этот UIView под scrollIndicators, но не прокручивать его с другим контентом, что произошло бы, если бы я сделал его подпредставлением scrollview через [scrollView addSubview: myMaskView];

Кто-нибудь знает, возможно ли это?

1 Ответ

0 голосов
/ 23 апреля 2012

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

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

В-третьих, в вашем методе делегата с представлением прокрутки viewForZoomingInScrollView: , верните представление вашего изображения, так что только изображение будет увеличено. Обратите внимание, что представление прокрутки будет регулировать размер содержимого в соответствии с размером возвращенного представления, но это нормально, если ваше представление изображения занимает весь размер содержимого.

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

Для получения более подробной информации вы можете обратиться к видео сеанса WWDC "Расширенные методы ScrollView".

РЕДАКТИРОВАТЬ: ОК, только что обнаружил, что вы можете избежать переопределения layoutSubviews путем реализации метода делегата scrollViewDidScroll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...