您的位置:首页 > 产品设计 > UI/UE

23.UITableView如何改变contentSize

2016-02-23 17:44 429 查看
在日常开发中,有些时候需要我们对 UITableVIew 的偏移量甚至 contentSize 做出调整, 那么有没有什么简单的方法呢?

1.硬性改变 contentSize

但是在改变其 contenSize后, 可能你会发现病不起作用, 那就证明你修改的时机不正确。首先,我们先来看几个 tableView 的代理

- (NSInteger)numberOfSections;
- (NSInteger)numberOfRowsInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;


在试验的过程中,初始化UITableView实例后,直接设置它的contentsize是不起作用,在搜寻相关资料得知,UITableView会自动设置contentsize,因为我们在建立tableview的时候是不用自己去设置contentsize的,是系统计算出来的。

所以,我们费心设置contentsize不起作用了。因为我们之前怎么设置,她都会默认经过那几个方法的时候自动重算一遍。

(UITableViewCell*)tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath

但当你在上面的代理中改变其 contenSize 的时候,就可以成功了。

总结,系统会进行多次执行上面的代理,所以,在datasource后,重新设置才会奏效,否则 contensize 的值又就会被系统的计算覆盖。

但这个方法本人是不推荐使用的,毕竟会破坏了 UITableview 内部自给自足的平衡,接下来你可以看一下下面的方法。

2.通过为 tableview 添加 header 或者 footer 来达到类似改变其 contensize 的效果

看到副标题你就会明白是什么意思了, 比如说当你需要增大 tableview 的 contensize 的高度了, 这时你可以通过添加一个 footerView 来达到这个目的。这里就不举例说明了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: