类似新闻首页标签的滚动与内容联动(对上一篇介绍的流畅度进行调整)

ps:前两天写了一篇类似新闻首页标签滚动与定位的文章,对于需求新闻类的标签滚动与内容联动来说,只要稍加修改,基本上都能够完成,上一篇文章采用的是collectionView与scrollView的联动,但是在我测试过程中发现两个问题:1.快速滚动内容视图,有时候顶部标签栏会出现标签和内容不对应的问题,这是在暴力测试下才有的 2.如果有强迫症的用户,会发现,在滚动标签栏的时候体验有些不好,如果滚动幅度小,有时候需要滚动好几下才能滚动到下一个标签,这样的体验也是硬伤,鉴于此,在原来的实现方式上我试过调整,但是没有成功,如果有哪位同伴弄出来了,麻烦贴出来,大家都可以共同学习,将这块类似的需求尽量做到完善。

所以,在技术老大的指引下,搜到了一个Nick Lock wood写的一个库,叫SwipeView,我接入到自己的项目中发现,滚动起来非常的流畅,下面就来说说我的具体实现,主要是对于顶部标签栏的实现,内容视图的实现采用的还是之前的方式,如果又兴趣的同伴,可以将内容视图呈现也采用SwipeView的方式,因为之前的方式没有采用复用tableView,而swipeView也许可以解决这方面的性能问题。

标签栏的定制

这里主要展示引入SwipeView之后的标签定制

 self.swipeView = [[SwipeView alloc] initWithFrame:self.bounds];
    self.swipeView.backgroundColor = [UIColor whiteColor];
    self.swipeView.alignment = SwipeViewAlignmentCenter;
    self.swipeView.pagingEnabled = YES;
    self.swipeView.itemsPerPage = 1;
    self.swipeView.truncateFinalPage = YES;
    self.swipeView.dataSource = self;
    self.swipeView.delegate = self;
    [self addSubview:self.swipeView];

它的实现方式很有点类似tableView的使用味道,下面看数据源方法和代理方法:

- (NSInteger)numberOfItemsInSwipeView:(SwipeView *)swipeView {
    
    return self.dataSource.count;
}

- (CGSize)swipeViewItemSize:(SwipeView *)swipeView {
    
    return CGSizeMake(self.frame.size.width / 3, self.frame.size.height);
}

- (UIView *)swipeView:(SwipeView *)swipeView viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view {
    if (!view) {
        view = [[NSBundle mainBundle] loadNibNamed:@"YGTagView" owner:self options:nil][0];
    }
    ((YGTagView *)view).tagTitle = self.dataSource[index];
    
    ((YGTagView *)view).tagSelected = (self.currentIndex == index);
    return view;
}

- (void)swipeView:(SwipeView *)swipeView didSelectItemAtIndex:(NSInteger)index {
    
    self.scrollSwipeView = NO;
    
    [self updateScrollOffsetWith:index];
    [self triggerTopItemRequestWith:index];
    
}

- (void)swipeViewWillBeginDragging:(SwipeView *)swipeView {
    
    self.scrollSwipeView = YES;
}

- (void)swipeViewDidEndDecelerating:(SwipeView *)swipeView {
    if (!self.scrollSwipeView) {
        return;
    }
    [self updateScrollOffsetWith:swipeView.currentItemIndex];
    [self triggerTopItemRequestWith:swipeView.currentItemIndex];
}

改变标签的位置代码如下:

- (void)updateScrollOffsetWith:(NSInteger)itemIndex {
    
    self.scrollSwipeView = NO;
    
    if (self.currentIndex == itemIndex) {
        return;
    }
    YGTagView *oldView = (YGTagView *)[self.swipeView itemViewAtIndex:self.currentIndex];
    oldView.tagSelected = NO;
    
    YGTagView *currentView = (YGTagView *)[self.swipeView itemViewAtIndex:itemIndex];
    currentView.tagSelected = YES;
    self.currentIndex = itemIndex;
    [self.swipeView scrollToItemAtIndex:itemIndex duration:0.2];
}

换成这种方式之后,不仅体验上更加流畅,而且代码也减少很多,具体的体验可以下载源码体验一下,对于这个库,我还没来得及细细学习,有想要研究的同学可以去开头给出的地址链接中下载学习一下,真的很不不错哦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,858评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,372评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,282评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,842评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,857评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,679评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,406评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,311评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,767评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,945评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,090评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,785评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,420评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,988评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,101评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,298评论 3 372
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,033评论 2 355

推荐阅读更多精彩内容