Я пытался создать дизайн, который 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
).Также я был бы признателен, если бы никакие другие рамки не были связаны, потому что я хотел бы достичь этого самостоятельно на практике.