iOS开发中,经常会碰到一些页面布局,有的部分高度是固定的,有的内容是要从服务器获取后再才能添加进去,所以高度是不确定的,在Android中,采用流式布局,最外面套一个scrollview,然后直接往里面加subview就可以,高度会被自动计算确定。但在iOS中就比较麻烦,我是新手,总结的做法有:
用tableview来做,但是非常麻烦,需要根据页面元素,把tableview切分成不同的section或者不同的cell,tableview的delegate和datasource需要根据不同的部分来分别响应,代码非常臃肿
用scrollview来做,不确定的内容部分用一个空白view来占位,然后从服务器得到结果后,建立subview插入到空白view中,但是这种方法也需要计算每个部分的高度,特别是如果包含了可变长度的文本,高度计算就变得很繁杂
直接用frame的方式,从服务器得到结果后,再开始从上到下构建页面的每个元素,但这种方式也是需要计算各个部分的高度,以便给scrollview一个确定的内容高度
请问各位大侠,iOS中的可变高度的布局,业界习惯是用什么方法来实现的呢?谢谢
http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/
可变高度的cell实现现在有两种方式:
1、使用代码计算出来每个cell的高度,然后在tableview中设置;可以参考:http://www.hcios.com/archives/471
2、如果应用只适配iOS8以上的系统,可以用self-sizing来实现。可以参考:http://www.hcios.com/archives/466
获取数据前固定死,得到数据后改变大小..
我这数据不多 代码还不算臃肿 而且他变高 变矮 很顺滑...
//一个section刷新
NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2];
[tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
//一个cell刷新
NSIndexPath *indexPath=[NSIndexPath indexPathForRow:3 inSection:0];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
试试
stack View
可能和你说的scrollview 相似,不知道stack view能否自适应,查阅一下文档吧,希望能帮到你
这里有滴滴快车工程师的介绍
http://www.imooc.com/video/11070
我感觉一般都是下面两种方式的配合:
1、Autolayout。
2、根据 View 对应的 Model 进行动态计算。
大方向上是这样,具体实现就看具体情况了。
很显然就是用 UITableView 做的。切成不同的 section 和 cell 是必要的。代码臃肿可以通过把 dataSource 从 viewController 拆出去解决。
用 scrollView、直接 frame 什么的这些都不是办法。