iOS自定义滚动条
来源:互联网 发布:淘宝乒乓球店 编辑:程序博客网 时间:2024/06/05 14:30
iOS自定义滚动条
当我在做一个项目时,碰到这么一个问题,那就是如何修改滚动条的颜色和让他一直显示着,并根据滑动而动态的修改它的坐标,一开始我以为是scrollView自己的一些属性就有这个功能,后来搜索了好久,并没有。scrollView本身的那个我是没弄懂如何修改,但是我自己定义了一个imageView来当滚动条,满足自己的需求,下面给大家介绍一下我的做法和思路。。。
我是通过collectionView实现的广告栏,我是先将collectionView本身的滚动条关掉,然后懒加载一个imageview
-(UIImageView *)scrollBar{ if (!_scrollBar) { UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, self.frame.size.height - kScrollBarHeight, kScrollBarWidth, kScrollBarHeight)]; imageView.backgroundColor = [UIColor redColor]; [self addSubview:imageView]; _scrollBar = imageView; } return _scrollBar;}
其中kScrollBarWidth,就是滚动条的宽度,这是我给滚动条定义的一个宏,不过这个宏不是固定的,他用当前屏幕的宽度/传过来的数组的个数来动态修改,这样就可以匹配多种手机,不至于难看。。。
kScrollBarHeight就是滚动条的高度,这个也是一个宏,不过这个我是固定的。
至于怎么让滚动条可以滑动呢,其实也简单,那就是在UIScrollViewDelegate中找到-(void)scrollViewDidScroll:(UIScrollView *)scrollView这个方法,在这个方法里面动态修改滚动条的X坐标。代码如下:
#pragma mark - 滚动时触发-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ [UIView animateWithDuration:0.5 animations:^{ CGPoint offset = self.collectionView.contentOffset; CGFloat index = offset.x / CGRectGetWidth(self.collectionView.frame); CGRect frame = self.scrollBar.frame; frame.origin.x = index * kScrollBarWidth; self.scrollBar.frame = frame; }];}
其中值得注意的是index最好设置成CGFloat类型,因为楼主之前一开始设置成NSInteger类型,滑动广告时,给人带来一种停顿的感觉,但是你设置成CGFloat类型,就不会有这个现象。
效果如下:
以上就是我自定义的滚动条的做法和思路,希望对你有所帮助!!!!!!!
0 0
- iOS自定义滚动条
- iOS自定义UIScrollView的滚动条
- 自定义BODY滚动条
- 自定义滚动条
- 自定义datagridview滚动条
- 自定义滚动条
- JPanel自定义滚动条
- 自定义网页滚动条
- 自定义滚动条
- 自定义滚动条插件
- 自定义滚动条
- 自定义滚动条
- css3 自定义滚动条
- 滚动条的自定义
- 拖拽+自定义滚动条
- 自定义滚动条样式
- 自定义滚动条
- 自定义View 滚动条
- RNN以及LSTM的介绍和公式梳理
- iOS小demo之验证码计时器
- 稀疏编码
- 命令模式(行为型)
- 动态规划-基本思想
- iOS自定义滚动条
- Log4j2学习成果
- SQL Server 存储过程
- iOS开发Debug之单个页面强制横屏
- 【NOIP2010】关押罪犯
- 全排列
- weka 3.6.13-SNAPSHOT 过滤器StringToWordVector参数含义解释
- 关于thinkphp的模板转换
- The substring() Method in JDK 6 and JDK 7