收藏 分享(赏)

【无限互联】iOS开发之自定义圆环式Slider.doc

上传人:myw993772 文档编号:6334020 上传时间:2019-04-07 格式:DOC 页数:7 大小:223.22KB
下载 相关 举报
【无限互联】iOS开发之自定义圆环式Slider.doc_第1页
第1页 / 共7页
【无限互联】iOS开发之自定义圆环式Slider.doc_第2页
第2页 / 共7页
【无限互联】iOS开发之自定义圆环式Slider.doc_第3页
第3页 / 共7页
【无限互联】iOS开发之自定义圆环式Slider.doc_第4页
第4页 / 共7页
【无限互联】iOS开发之自定义圆环式Slider.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、【无限互联】IOS 开发之自定义圆环式 Slider前言 这里实现的是一个圆环形式的 Slider 滑动条效果。封装了 EFCircularSlider 类,利用该类可实现的效果有:基本的圆环滑动效果、双重圈滑动点的圆环滑动条效果,以及当下流行的滑动选择时间效果。EFCircularSlider 框架简介 由于滑块是一个标准的 UIControl,所以 EFCircularSlider 是一个集成 UIControl 的类。 该类绘制了两个空心圆,一个作为初始滑动条,一个用来填充滑动条,手柄拖动时,根据三角函数计算出当前手柄点所在的地方,绘制弧线,覆盖在原初始滑动条之上。滑动手柄的样式可选择,

2、还可根据需要添加文字标签,优美的改变了 UISlider 的外观。 滑块的实现通过 UIControl 的以下协议方法:o /开始跟踪触摸 -(BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;o /继续 跟踪触摸 -(BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;o /结 束跟踪触摸 -(void)endTrackingWithTouch:(UITouch *)touch withEvent:

3、(UIEvent *)event;objc view plaincopyprint?1. #pragma mark - UIControl functions 2. /开始跟踪触摸 3. -(BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 4. super beginTrackingWithTouch:touch withEvent:event; 5.6. return YES; 7. 8.9. /继续跟踪触摸 10. -(BOOL) continueTrackingWithTouch:(UITo

4、uch *)touch withEvent:(UIEvent *)event 11. super continueTrackingWithTouch:touch withEvent:event; 12.13. CGPoint lastPoint = touch locationInView:self; 14. self moveHandle:lastPoint; 15. self sendActionsForControlEvents:UIControlEventValueChanged; 16.17. return YES; 18. 19.20. /结束跟踪触摸 21. -(void)end

5、TrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 22. super endTrackingWithTouch:touch withEvent:event; 23.24. if(_snapToLabels 26. float minDist = 360; /距离 27. for (int i=0; ilabelsEvenSpacing count; i+) 28. /在圆上得百分比 29. CGFloat percentageAlongCircle = i/(float)labelsEvenSpacing count;

6、30. /度数 31. CGFloat degreesForLabel = percentageAlongCircle * 360; 32. if(abs(fixedAngle - degreesForLabel) minDist) 33. minDist = abs(fixedAngle - degreesForLabel); 34. bestGuessPoint = self pointFromAngle:degreesForLabel + 90 + 180; 35. 36. 37. CGPoint centerPoint = CGPointMake(self.frame.size.wid

7、th/2, self.frame.size.height/2); 38. angle = floor(AngleFromNorth(centerPoint, bestGuessPoint, NO); 39. _currentValue = self valueFromAngle; 40. self setNeedsDisplay; 41. 42. EFCircularSlider 框架的使用 导入框架: #import “EFCircularSlider.h“ 基本用法: objc view plaincopyprint?1. EFCircularSlider* circularSlider

8、= EFCircularSlider alloc initWithFrame:CGRectMake(50, 180, 220, 220); 2. circularSlider addTarget:self action:selector(valueChanged:) forControlEvents:UIControlEventValueChanged; 3. self.view addSubview:circularSlider; 上述代码就能实现 EFCircularSlider 框架中封装的功能,使用简单,效果优美。 定义全局变量: objc view plaincopyprint?1.

9、 EFCircularSlider *_minuteSlider; 2. EFCircularSlider *_hourSlider; 初始化 Sliderobjc view plaincopyprint?1. _minuteSlider = EFCircularSlider alloc initWithFrame:CGRectMake(10, 170, 300, 300); 2. _hourSlider = EFCircularSlider alloc initWithFrame:CGRectMake(55, 220, 210, 210); 访问 UISlider 的值objc view p

10、laincopyprint?1. _minuteSlider.lineWidth = 8; /设置线宽 2. _minuteSlider.minimumValue = 0; /设置最小值 3. _minuteSlider.maximumValue = 60; /设置最大值 objc view plaincopyprint?1. _hourSlider.lineWidth = 12; /设置线宽 2. _hourSlider.minimumValue = 0; /设置最小值 3. _hourSlider.maximumValue = 12; /设置最大值 4. _hourSlider.snapT

11、oLabels = NO; /设置标签不对齐 改变 Slider 外观显示的颜色objc view plaincopyprint?1. _minuteSlider.unfilledColor = UIColor colorWithRed:23/255.0f green:47/255.0f blue:70/255.0f alpha:1.0f; 2. _minuteSlider.filledColor = UIColor colorWithRed:155/255.0f green:211/255.0f blue:156/255.0f alpha:1.0f; 3.4. _hourSlider.unf

12、illedColor = UIColor colorWithRed:23/255.0f green:47/255.0f blue:70/255.0f alpha:1.0f; 5. _hourSlider.filledColor = UIColor colorWithRed:98/255.0f green:243/255.0f blue:252/255.0f alpha:1.0f; 设置文字标签objc view plaincopyprint?1. _minuteSlider setInnerMarkingLabels:“5“, “10“, “15“, “20“, “25“, “30“, “35

13、“, “40“, “45“, “50“, “55“, “60“; 2. _minuteSlider.labelFont = UIFont systemFontOfSize:14.0f; 3. _minuteSlider.labelColor = UIColor colorWithRed:76/255.0f green:111/255.0f blue:137/255.0f alpha:1.0f; 4.5. _hourSlider setInnerMarkingLabels:“1“, “2“, “3“, “4“, “5“, “6“, “7“, “8“, “9“, “10“, “11“, “12“;

14、 6. _hourSlider.labelFont = UIFont systemFontOfSize:14.0f; 7. _hourSlider.labelColor = UIColor colorWithRed:127/255.0f green:229/255.0f blue:255/255.0f alpha:1.0f; 改变手柄样式objc view plaincopyprint?1. _minuteSlider.handleType = doubleCircleWithOpenCenter; 2. _minuteSlider.handleColor = _minuteSlider.fi

15、lledColor; 3.4. _hourSlider.handleType = bigCircle; 5. _hourSlider.handleColor = _hourSlider.filledColor; 设置 Slider 的行为objc view plaincopyprint?1. _minuteSlider addTarget:self action:selector(minuteDidChange:) forControlEvents:UIControlEventValueChanged; 2.3. _hourSlider addTarget:self action:selector(hourDidChange:) forControlEvents:UIControlEventValueChanged; 为 Slider 添加方法,当 Slider 的值改变时就会触发该方法。效果图:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报