Как добиться этого дизайна?Поведение при прокрутке от подчиненного до родительского - PullRequest
0 голосов
/ 09 февраля 2019

Я пытался создать дизайн, который Twitter использует для профилей в приложении iOS.Вот gif, чтобы продемонстрировать, чего я хочу достичь: GIF дизайна твиттера

Создать представление с кнопками сверху и жестом смахивания для переключения между ними довольно легко и имеетбыло достигнуто раньше.Например, здесь: Github

Я воссоздал это с UICollectionView и UIView, которые удерживают кнопки и остаются сверху.Смахивание обрабатывается UICollectionView.Каждая ячейка содержит ViewController и имеет размер view.frame.height - buttonView.frame.height, что дает мне ячейку с fullscreen - height of the UIView holding the buttons.

Как я измеряю ячейку:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: view.frame.width, height: (view.frame.height - 44.0))
}

Пока проблем нетНо теперь я хочу изменить дизайн и сделать его более похожим на Twitter.Как вы можете видеть на GIF, в Twitter есть еще UIView (с информацией о пользователе) над UIView, удерживающим кнопки.

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

Моя иерархия представлений будет выглядеть следующим образом: Иерархия представлений

Теперь я столкнулся с проблемой, так как не знаю, как определить размер моей ячейки.Я планирую иметь массив UIViewController s, содержащий представления, которые я хочу показать, большинство из них будет UIViewController s с UITableViewDelegate.

То, что я хочу, чтобы происходило: когдапользователь прокручивает, я хотел бы, чтобы верхняя часть UIView (InfoView) вышла за пределы экрана, а UIView, содержащая кнопки, чтобы закрепиться сверху.Все по прокрутке в клетке.

Теперь, как мне связать свиток из подпредставления ячеек с родительским представлением?Или как мне этого добиться?

Или я могу каким-то образом сделать макет UIViewController того размера, который ему необходим, а затем получить размер ячейки?Если да, как бы я это сделал?

Я бы хотел, чтобы это было как можно более универсальным (имеется в виду, что я могу добавить к нему любой UIViewController).Также я был бы признателен, если бы никакие другие рамки не были связаны, потому что я хотел бы достичь этого самостоятельно на практике.

...