iOS开发技术UITableView

UITableView在视图出现时像微信和QQ一样滚动到底部

2016-09-29  本文已影响155人  杀不死bill

直接在UITableView中加入代码,可以滚动到底部

if (self.tableView.contentSize.height >kScreen_Height) {
            [self.tableView setContentOffset:CGPointMake(0, self.tableView.contentSize.height -self.tableView.bounds.size.height) animated:NO];
        }

但是放在 viewDidLoad: 中table的datasoure还没有加载完,没有效果,放在 viewDidAppear:中的时候就会出现闪一下的情况,很影响用户体验。
然后就想到如果table加载完了以后马上滚动就不会有闪一下的视觉差,在文档中没有找到tableview加载完以后的响应,于是想到我把[self.table reloadData];然后监测raloadData完了以后在滚动,终于实现了效果。

- (void)viewDidLoad {
    [super viewDidLoad];

    //其他代码

    //滚动到底部代码
    [self.tableView reloadData];//这里会自动设置tableView layoutIfNeeded为YES,意味着将会在runloop结束时重绘tableView,并将重绘任务提交到主队列
    dispatch_async(dispatch_get_main_queue(),^{
        //由于mainQueue是串行的,执行到这里说明上一个提交到mainQueue的task已经完成了(即tableView重绘)
        if (self.tableView.contentSize.height >kScreen_Height) {
            [self.tableView setContentOffset:CGPointMake(0, self.tableView.contentSize.height -self.tableView.bounds.size.height) animated:NO];
        }
    });
}

问题解决

上一篇下一篇

猜你喜欢

热点阅读