iOS 使用ScrollView自定义Slider

首先说下为什么要自定义Slider

UISlider系统提供的方法:

- (void)setThumbImage:(UIImage *)image forState:(UIControlState)state;

- (void)setMinimumTrackImage:(UIImage *)image forState:(UIControlState)state;

- (void)setMaximumTrackImage:(UIImage *)image forState:(UIControlState)state;

只能更改3种背景图片。如果设计要做成这样...基本就可以放弃使用UISlider了

自定义Slider

基本思路

创建UIimageView  * linBgImageView        slide未被选中的背景 

创建UIView          * linView                       slide选中的背景 

创建UIImageView * linBgPointImageView  slide上面的刻度

创建UIImageView * touchImageView         slide上面拖动的点

实现touchesEnded方法比较麻烦,代码如下:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ NSInteger allLenght = linBgImageView.frame.size.width; NSInteger originX = linBgImageView.frame.origin.x+3; NSInteger unitLenght = (allLenght/12); //7个等级分成12份 //逻辑 //    if (touchX <= originX + unitLenght) {  //等级0 //        touchX = originX + unitLenght * 0; //    } //    else if (touchX <= originX + unitLenght * 3)//等级1 //    { //        touchX = originX+unitLenght * 2; //    } //    else if (touchX <= originX + unitLenght * 5)//等级1 //    { //        touchX = originX+unitLenght * 4; //    } for (int i = 0; i < 7; i++) { NSInteger level = (i*2+1); if (touchX <= originX + unitLenght * level)//等级1 { touchX = originX + unitLenght * (level-1); touchImageView.center = CGPointMake(touchX, linBgImageView.center.y); [self setvalueLineview]; nowLevel = (((long)level-1)/2)+1; nowLevelImageView.alpha = 1; [self performSelectorInBackground:@selector(levelAction) withObject:nil]; return; } } } - (void)setvalueLineview { linView.frame = CGRectMake(linBgImageView.frame.origin.x, linBgImageView.frame.origin.y, touchImageView.center.x-linBgImageView.frame.origin.x, 3); linView.center = CGPointMake(linView.center.x, linBgImageView.center.y); }

我又重新整理下代码,可能会有一些不同的地方。但是主要逻辑是一样的。

代码地址:github:https://github.com/YBYHunter/YUSlider (如果喜欢star下,谢谢)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏落影的专栏

iOS开发-AFNetworking详解

这是一篇AFNetworking的详细解析 使用示例 新建一个AFHTTPSessionManager的manager,然后用manager请求对应网址的信息,...

3246
来自专栏一“技”之长

从AFNetworking源码分析到应用全解 原

    AFNetworking是iOS/OS开发中常用的一个第三方网络库,可以说它是目前最流行的网络库,但其代码结构其实并不复杂,也可以说非常简洁优美。在AF...

2943
来自专栏Alice

iOS iOS与html进行交互

实现的 效果就是上边那样:首先通过webview 进行网络请求 然后进行显示。          然后点击下一页的按钮 通过js的响应显示另一个网页      ...

36710
来自专栏DannyHoo的专栏

iOS开发中利用AFNetworking进行断点下载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1733
来自专栏移动端开发

Telegram学习解析系列(二):这我怎么给后台传输数据?

写在前面:          在iOS开发的过程中,有很多时候我们都在和数据打交道,最基本的就是数据的下载和上传了,估计很多很多的小伙伴都在用AFNetwork...

37710
来自专栏iOS122-移动混合开发研究院

BlocksKit初见:一个支持将delegate转换成block的Cocoa库

简介 项目主页: https://github.com/zwaldowski/BlocksKit BlocksKit 是一个开源的框架,对 Cocoa 进行了扩...

20910
来自专栏岑志军的专栏

iOS开发 UIlabel 文字两边对齐

1806
来自专栏Netkiller

vsftpd FTP服务器安装与配置

本文节选自《Netkiller Linux 手札》 3.4. vsftpd - The Very Secure FTP Daemon 3.4.1. 安装 vsf...

4054
来自专栏coding...

iOS开发实战-时光记账Demo 网络版效果分析客户端部分服务端部分Demo地址简书主页

user表 相反Tally与Users的关系就是:一对多

862
来自专栏DannyHoo的专栏

解决“真机上不能读取本地路径”的问题d

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1412

扫码关注云+社区