iOS设置UITableView显示滚动条

Work Hard, Play Hard, Live Life.

前言

最近刚好遇到这么一个需求,当列表数据超过列表高度的时候,需要显示滚动条。
目前,UItableview无法一直显示滚动条,只有当用户往下拉会出现滚动条,后面会自动消失。无法满足用户需求。
网上搜索一番,解决方案主要有两种,第一,自定义view,监听滚动,添加自定义滚动条;第二,重写UIImageView分类,重新setAlpha方法。第一种,确定可以实现,但是看着和操作不如自带的自然顺畅,放弃;第二种,会出现其他图片显示不出来。百思不得其解,果断放弃。

实现

灵光一现,从第二种方法,知道UIScrollView 的 滚动条(ScrollBar Indicators),就是默认右侧的 darkgray 条,当你滚动一个 UIScrollView 的时间,这个滚动条就会显示,并且显示和隐藏都是淡入和淡出的。 这是,你或许就能猜到是什么了:UIImageView. 滚动条就是一个UIImageView,那个滚动条就是一个图片而已。而滚动条的消失、隐藏淡入淡出,都是设置的 UIImageView的 -(void) setAlpha 方法。但是分类会影响所有的UIImageView类,那就单独获取UITableView的UIImageView进行二次改造。这种做法,其实很常见,例如改变searchbar的相关属性,uilaterview的标题属性等等。二话不说,看下面代码。

- (void)layoutSubviews{
    
    [super layoutSubviews];
    [self.subviews enumerateObjectsUsingBlock:^( id obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if ([obj isKindOfClass:[UIImageView class]]) {
            UIImageView * imageView = [[UIImageView alloc] init];
            imageView = obj;
            imageView.alpha = 1 ;
        }
    }];
    UIView * view = [self.subviews lastObject];
    if (view.top < 0) {
         view.top = 0;
    }
   
}

1、建立一个UItableview的分类,重写layoutSubviews
2、遍历查询出UIImageView,设置透明度为1
3、设置UIImageView的x为0(让滚动条显示)
以上设置这样就可以永远显示自带滚动条,你可以根据需求设置什么时候显示,什么时候不显示。具体还是看需求,这里提示这样一种解决方案。

源码

上述是主要流程,完整的源码可以通过以下方式获取

https://github.com/huangkunhe/UITableViewDemo

小结

谢谢以下博主提供的思路
https://www.cnblogs.com/xunziji/p/3248850.html
https://www.jianshu.com/p/85ca51a22609

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在 IOS 中,对 UIScrollView 的滚动条(ScrollBar Indicators)的自定义设置接口...
    纪叙阅读 2,766评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • <实践事项> 把今日内容分享给朋友。 <实践日志(记录)> 1.我在本讲中的收获: (1)培养专注的节奏感,人不可...
    小草莓_Ariel阅读 192评论 0 0
  • 39号武丽娟9-12感恩日志,1,感恩老公和我一起学习,2,感恩婆婆帮我带孩子,孩子乖巧懂事,3感恩老师又是长发5...
    花布鱼阅读 204评论 0 0
  • 结束了每天吃着火锅唱着歌就怕突然挂了科的大学时代,纠缠在为生存奔波的周而复始的忙碌工作里,纷纷扰扰已然成为我们生活...
    丑小鹅阅读 309评论 2 1