Swift: вертикальная прокрутка внутри горизонтальной прокрутки внутри вертикальной прокрутки - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь создать поведение прокрутки, подобное странице профиля Instagram, ie. вертикально прокручиваемый вид сверху (например, имя, аватар и т. д. c.), а ниже - сетка изображений, которые могут перемещаться влево и вправо, чтобы показать больше наборов изображений, а также возможность вертикальной прокрутки.

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

enter image description here

У меня есть такие настройки:

enter image description here

Примечание: ширина и высота зеленый скроллвид равен красному.

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

Я добился определенного успеха, включив / отключив зеленую прокрутку, когда красный scrollview прокручивается за высоту заголовка, но выглядит довольно дерзко.

  func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {

     let translation = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
     var isScrollingDown = translation.y > 0
     let offset = scrollView.contentOffset.y

     if isScrollingDown, offset <= scrollHeight { //scrollHeight is equal to the height of the header cell
         greenScrollView.isScrollEnabled = false
     }
     else if !isScrollingDown, offset >= scrollHeight {
         greenScrollView.isScrollEnabled = true
     }
 }

Это решение движется в правильном направлении, или есть лучший способ добиться sh этого, которого мне не хватает?

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Я создал репо, которое, по моему мнению, является тем же (который также поддерживает автоматическое расположение), как и пример, приведенный Харрисоном Сенесой c, за исключением того, что мое репо пока имеет только горизонтальную прокрутку. Она должна быть библиотекой в ​​отличие от примера, который дал Харрисон (который не будет работать хорошо с NavigationController или нижним TabBar, так как его UIScrollView использует фреймы, тогда как мой использует autolayout).

https://github.com/YoomamaFTW/infinite-view-controllers

По сути, для будущих пользователей главное - использовать UIScrollBar, который выглядит как PageController. Каждая «страница» - это просто контроллер представления, который вы добавляете в UIScrollBar при одновременном увеличении ширины размера контента.

Я реализовал некоторые функции (например, представление коллекции, показывающее два изображения и строку в gif). что вы добавили), но они будут добавлены в субботу, так как у меня не было времени добавить его и в мое приложение, и в репозиторий.

0 голосов
/ 09 января 2020

Я боролся с этим некоторое время. Я сталкивался с этим, и это работало очень хорошо.

https://github.com/OfTheWolf/TwitterProfile

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