修复iOS 7中由UIRefreshControl引起的UITableViewController偏移问题

10
我正在我的uitableviewcontroller中设置UIRefreshControl,但是导航栏和uitableview之间有很大的空隙。调整“调整滚动视图插图”并不能帮助解决问题,因为控制器会在启动时覆盖导航栏。我可以禁用“在顶部下方的栏”,但我希望在滚动时保留该功能。当我在调试器中浏览时,我注意到tableView.contentInset在各个时间偏移了82个点,这与人们谈论的新的iOS7栏行为的通常20/64pt偏移量不同。这里发生了什么?
1个回答

24

在进一步探索时,我找到了一个解决方案,希望它能为某些人节省几个小时!

我需要在viewDidLoad:之后实例化我的UIRefreshControl,或者至少在那之前避免在代码中设置其attributedTitle(例如,如果我在IB中启用了表格的刷新)。在viewDidLoad:中设置字符串会混乱iOS对控件和表格视图的布局,但是在viewWillAppear:或以后可以,一旦几何形状被设置。而且我认为82点是UIRefreshControl的高度。在IB中设置刷新标题也可以避免这个问题,但我之所以在代码中这样做是因为我不想每次都在IB中为我的表格启用刷新。


谢谢您发布这个!我确实是在viewDidLoad中设置我的refresh control的attributedTitle,如果在VWA之前过快地完成,它会破坏布局。 - adamweeks
1
哇,我已经为这个愚蠢的uirefreshcontrol挣扎了好几个小时了。谢谢你! - Mr. T
4
在viewWillAppear方法中对我不起作用,但在viewDidAppear方法中却可以。 - Ryan J. Thompson
嗨 :) 为了保险起见,请确保您已经添加了[self.refreshControl endRefreshing]或self.refreshControl.endRefreshing(),具体取决于您使用的语言。 - crojassoto
避免设置attributedTitle对我很有帮助,我甚至可以在init中实例化UIRefreshControl。 - ajeetdl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接