Fog*_*ter 12 objective-c uitableview ios uirefreshcontrol
UINavigationController我的应用程序中有一个.该UINavigationBar设置为不透明和所有的滚动视图不酒吧的下面重叠.
在一个视图中,我有一个UITableView.所述的帧UITableView就是(0 0; 320 504)在我的iPhone 5.即,高度为568 - 64(导航栏和状态栏中的高度).
该contentInset的UITableView是(0, 0, 0, 0).当表视图首次加载contentOffsetis时(0, 0).
这可以.工作出色.
我UIRefreshControl在表视图中添加了一个.这可以工作几次,但是经过几次拉动刷新之后,顶部的内容会在导航栏下"卡住".
当发生这种情况时,我会检查contentInset它,现在就是(-60, 0, 0, 0).
有没有办法阻止UIRefreshControl改变contentInset?
这可能UIRefreshControl是目前仅支持的原因UITableViewController,而不是添加到任何滚动视图(在许多情况下你可以使用它).
刷新控件通过修改scrollview的内容插入来实现其魔力 - 特别是当它结束刷新时.不幸的是,视图控制器还在修改滚动视图的内容插入,以使其适合半透明的导航和状态栏.随之而来的乐趣.这在iOS 6上也是一个问题(或者,在处理同样的问题时,我称之为"好旧的iOS6").
最快的解决方案可能是将您的表视图添加为子UITableViewController而不是简单的子视图.我认为UITableViewController在刷新结束时为您管理insets.如果这不起作用,我已经为此做了解决方法,但它必须等到我回到办公室.
我将在这里添加这个答案,以防任何人UIRefreshControl通过更改控件属性(属性标题,色调等等)出现问题:
做的不要乱UIRefreshControl上-viewDidLoad:,使用-viewDidAppear:来代替.
重置表视图contentInset。
-(void)pullToRefresh
{
[self.tableView reloadData];
[self.refreshControl endRefreshing];
[self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11460 次 |
| 最近记录: |