iOS 类似扣扣微信中腾讯新闻的新闻列表实现

来源:互联网 发布:曲阜问政网络平台 编辑:程序博客网 时间:2024/05/16 00:26

由于项目近期添加新闻列表,就是类似扣扣和微信中的腾讯新闻的那种列表,所以就自己琢磨着实现了一下,

1、首先注意到,扣扣的新闻列表和普通的看起来并没有什么不同,但是在刷新数据的时候,细心的同学就会发现,它和普通的列表还是有区别的,比如界面一加载就滑动到最下面等等,下面来介绍一下我的列表制作。

2、对于把表格自动滑动到最后一行,这个实现起来比较简单(前提表格就是正常的添加,不做变换等操作),这个链接里就有讲到,http://blog.csdn.net/sw_gegewu/article/details/51886945。

3、还有一种方式,就是把表格进行变换。
(1)首先变换表格:

- (void)viewDidLoad {    [super viewDidLoad];    self.tableView.transform = CGAffineTransformMake(1, 0, 0, -1, 0, 0);}

(2)把cell做同样的变换

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    NewsCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];    if (cell == nil) {        cell = [[[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:nil options:nil] lastObject];        cell.transform = tableView.transform;    }    return cell;}

这样的话,tableview和cell就是同样的变换了,这里说明一下,如果cell不做变换,否则会看到,cell是反转的
(3)返回cell高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    return 500; // 或者是自己计算的高度}

值得注意的是,变换之后的 tableview需要返回实际的高度,而不是系统自动布局的高度,否则界面会跳动,达不到效果,至于原因我也没找到,嘻嘻,
这样的话,运行程序,就会发现数据正常在底部展示了,
(4)加载新数据,扣扣的新闻是滑动到最上面加载数据(没有下拉刷新控件),所以我们也可以这样做,
实现UIScrollerViewDelegate的一个代理方法,

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{    CGFloat allHeight = 0;    for (NewsModel *news in self.newsData) {        allHeight += news.cellHeight;    }    CGFloat contentOffset = scrollView.contentOffset.y+self.tableView.frame.size.height;    if (contentOffset == allHeight) {        [self getNewsList];    }}

请求的新数据拼接一下就可以了,这个要自己来做了。

这样的话,就可以判断当用户滑动到表格的最上面的时候就去加载新数据,或者在刚滑动的时候最判断加载数据也可以。这样就模仿了扣扣的腾讯新闻列表了。

0 0
原创粉丝点击