实在吃过太多页面设计的亏,所以总结一下基于UITableview构建UI的一些好处。
UITableview是数据驱动的,根据内置的机制做展现。修改dataSource就可以控制界面的展现。刷新界面时只需要使用
reloadData
和reloadRowsAtIndexPaths
就能完成。页面扩展能力佳。未来业务发展,需要在页面最上面最下面增加内容,对之前代码做少量修改就能做到。
大量实现下拉刷新功能的开源项目,如果页面需要刷新功能,轻松做到。
UITableview具有强大的表现能力,再复杂的页面都可以完成。
UITableview使得交互更加统一,所有的页面,不管内容多少,都可以scroll和bounce,符合iOS的交互习惯。可以参看iOS自带的App的交互。
UITableView隐藏着很多高级特性(继承自UIScrollView),比如
automaticallyAdjustsScrollViewInsets
让内容可以滚动到导航栏和tabbar的后面,配合磨砂效果,视觉效果非常赞;比如点击状态栏会滚动到顶部;这些特性不需要开发就与生俱来。iOS 8新增
Self Sizing Cell
,只需要设置rowHeight为UITableViewAutomaticDimension
就可以实现cell高度根据约束
自动调整(务必设置top和bottom与contentView的约束),cell高度计算和缓存已经成为历史往事。滚动到页面指定的位置非常方便。并且通过保存UITableview的contentOffset,可以记住页面滚动的位置,当用户进入相同的页面,滚动到之前的位置。
contentOffset妙用无穷。比如点击UITextField编辑时让其往上滚动一点,避免被升起来的键盘遮挡,只要scroll一下便可做到。有些页面只需将UITableView的
keyboardDismissMode
设置成interactive,轻松拥有MessageApp那样灵动的交互。尤其适合写Hotpatch,因为UITableView从渲染到点击都有非常标准的接口,通过对这些接口做patch,可以解决各种各样的问题。即使是Swift App,因为UIKit还是OC写的,使用JSPatch一点问题都没有。