ScrollView使用的时机,什么时候tableview或集合视图是更加适合的呢?
scrollView 是可以使得你的内容可以滚动的视图,水平和垂直方向都可以。而表视图和集合视图事实上也是滚动视图,因为他们都是UIScrollView的子类,但是什么时候使用前者,什么时候使用后者呢?
简单说来,当你有一个重复的条款的滚动列表时表视图和集合视图应该在任何时候使用。表视图用于垂直列表,集合视图在表视图的容量上进行了扩展,增加了水平滑动,栅格和更加复杂的布局。在表视图或集合视图内的选项经常是同一类型但是也可以是不同类型。表示图和集合视图也提供了在区域内使用群组选项的能力。表视图和集合视图都遵循相同的原则。
为什么选择表视图去代替使用滚动视图呢?有不同的原因
1,如果你用滚动视图,你必须计算每个选项的位置,即使你用自动布局。这产生了大量的引用代码,因此苹果公司创造了表视图去减少这样的代码
2,如果你想增加,插入,删除或重新整理,你就需要自己写甚至更多的代码。表示图免费提供了这个功能。
3,一个内置标准的滚动视图的视图一直在内存中保持着,当选项的列表增长时,这就成了一个问题,经常出事。当你有很多的视图时,内存很快填满。并且当一个应用占用很多内存时,它会被系统终止。此外,这些视图在视图层次中停留。当滚动是,它们的位置直接得到重新计算。一个表示图解决了这些问题,因为它重用了视图,因此它在给定的时间内需要很少内存。
对于这些原因,每次你需要陈列选项列表,一个表视图是你最佳选择。当然滚动视图也仍然对于一些事件而言是有用的。例如:
当你有一个UI没有匹配在屏幕上,但是它不是同类的选项列表
当你想要不同的方向滚动或缩放在更广的区域去展示,像图片或者一个地图。
表视图是如何工作的呢
1,首先表视图用称之为单元格的视图去显示它的选项。一个表视图的cell是UITableViewCell的子类,它们通过表视图垂直排布。当滚动引起一个cell出了屏幕时,表视图重用它去显示新的选项。以这样的方式仅仅有少量的cell同时在屏幕上和内存中。
这所有的都被表视图完成,不需要任何特别的计算在你的其他部分上。所有你必须做的就是重新配置重用的cell去显示一个新的选项。
表视图中的cell都通过原型的cell去生成,因此它们是相似的。一个表视图可以用多于一个原型的cell,如果它需要展示多于一类的元素时。例如,你做了一个社交网络的app-能发表文本帖子,图片或视频,一个表视图对于选项的这些类型的每一个都有一个原型。它或许是直觉,对于表视图工作,你需要用所有元素的列表去配置它,但是为了消除在内存中保留所有的选项,表视图工作是不同的,所有你要做的就是告诉表视图总共有多少选项-从开始就没有提供它们。这个表视图在二个额外的对象上回应,当必要时它会问cell要显示在屏幕的信息