文档章节

iOS8下UITableView的contentsize自动变化问题

yoyoso
 yoyoso
发布于 2015/03/07 17:56
字数 449
阅读 6675
收藏 1

        遇到一个问题,一个页面中有一个UITableView,在iOS8中点击里面的图片或者链接push到下一个页面再返回时,TableView的底部就被遮盖在屏幕底部了,只有滑动到底部的瞬间能看到。而iOS7系统上就无此问题。

        简单的定位了一下,是在返回的时候UITableView的contentsize自动变小了,初次接触到此问题,觉得颇为离奇,因为在返回后代码对contentsize没做任何修改。那么,就是系统自动对contentsize修改了?

        搜索到了这篇文章:(iOS)关于UITableView设置contentsize,大概知道原因了,UITableView的contentsize一般都是自动计算的,就算你修改了之后总会在某个时机会重新自动计算,大概返回的时候就触发了这个自动计算。

        看了一下前人的代码,的确有人为设置contentsize的地方,那么,现在就好办了,避免人为设置就行了。之所以需要设置contentsize是因为在TableView的顶部增加了一个自定义的View,这个view是通过tableview addsubview添加进去的并且进行了setContentInset。而TableView在自动计算contentsize时是不会把这个自定义View计算进去的。

        想起tableview有一个tableheaderview属性,我通过这个属性添加自定义View,就无需自己计算contentSize了,问题得到解决。

© 著作权归作者所有

共有 人打赏支持
yoyoso
粉丝 48
博文 125
码字总数 44507
作品 0
南京
高级程序员
加载中

评论(1)

碧野MAX
碧野MAX
我现在就是有一个自定义View设置成了TableView的headerView,但是我自定义view里边有几个按钮点击之后会展开,所以每次点击我都要用Autolayout重算一次高度然后重设TableView的headerview,结果就是每次点击展开之后TableView的contentSize的y就会+1,而且是累加的,点击一次就加1,很费解,不知道什么原因
优化UITableViewCell高度计算的那些事

我是前言 这篇文章是我和我们团队最近对 UITableViewCell 利用 AutoLayout 自动高度计算和 UITableView 滑动优化的一个总结。 我们也在维护一个开源的扩展,UITableView+FDTemplateLayoutCel...

SunGiantor
2015/05/21
0
2
iOS8下动态改变Cell高度以及iOS8的动态类型理解

在iOS8中,苹果给出了一个激动人心的特性,UITableView 的 Self Sizing Cells。对于开发者来说,这是一个很值得一试的特性,在iOS8以前,如果需要在UITableViewCell中展示动态的内容,必须每...

hejunbinlan
2015/06/24
0
0
contentsize contentoffset contentInset的区别

contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。 contentOffset是scrollv...

潘康醒
2012/12/03
0
0
iOS UITableView代理方法详解

iOS UITableView的代理方法详解 一、补充 在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我将IOS中tableView(表视图)的一些常用方法总结了一下,这篇将tableView的代理方法...

珲少
2015/04/22
0
2
关于UITableView你知道多少——UITableView简单解析

转自萧宸宇的博客 UITableView是在iOS开发中,展示大量内容的首选。我个人认为的原因有以下几点: 1.UITableView的展现形式是为移动设备专门设计过的。有较好的人机交互体验。 2.从技术角度来...

浪子艾菲儿
2013/08/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python标准输入输出

input() 读取键盘输入 input() 函数从标准输入读入一行文本,默认的标准输入是键盘。 input 可以