我一直在尝试实现类似Twitter的设计,以用于iOS应用程序上的配置文件。这里有一个gif来展示我想要实现的目标: GIF of the twitter design
使用顶部的按钮创建视图并在它们之间切换的轻扫手势是相当容易的,并且之前已经实现。例如此处: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
包裹在每个子视图中。
我的视图视图层次结构如下所示:View Hierarchy
现在我面临一个问题,因为我不知道如何调整单元格的大小。我计划有一个UIViewController
数组来容纳我想显示的视图,其中大多数将是UIViewController
并带有一个UITableViewDelegate
。
我想发生的事情:当用户滚动时,我希望顶部的UIView
(InfoView)移出屏幕,但是UIView
包含的按钮仍停留在顶部。全部滚动到单元格中。
现在,如何将滚动从单元格子视图绑定到父视图?或者我该如何实现?
或者我能以某种方式使UIViewController
布局达到其自然所需的大小,然后使单元格具有该大小吗?如果可以,我该怎么办?
我希望它尽可能通用(意味着我可以在其中添加任何UIViewController
)。如果没有其他框架链接,我也将不胜感激,因为我希望自己作为实践来实现。