iOS开发 刻度盘 仪表盘,圆点按钮滑动控制,渐变色

news/2024/9/24 1:28:17/

最近项目需要,想做一个渐变色的刻度盘,圆形按钮滑动控制,所以 用oc写了一下,代码没附上,想看代码可以私信联系,效果如下图。

部分代码

self.drawCenter = CGPointMake(self.frame.size.width / 2.0, self.frame.size.height / 2.0);self.radius = self.circleRadius;self.circleStartPoint = CGPointMake(self.drawCenter.x, self.drawCenter.y - self.circleRadius);CGContextRef ctx = UIGraphicsGetCurrentContext();//圆形的背景颜色CGContextSetStrokeColorWithColor(ctx, self.backgroundTintColor.CGColor);CGContextSetLineWidth(ctx, self.circleBorderWidth);CGContextAddArc(ctx, self.drawCenter.x, self.drawCenter.y, self.radius, 0, 2 * M_PI, 0);CGContextDrawPath(ctx, kCGPathStroke);//加载的进度UIBezierPath *loadPath = [UIBezierPath bezierPath];CGFloat loadStart = -M_PI_2;CGFloat loadCurre = loadStart + 2 * M_PI * self.loadProgress;[loadPath addArcWithCenter:self.drawCenterradius:self.radiusstartAngle:loadStartendAngle:loadCurreclockwise:YES];CGContextSaveGState(ctx);CGContextSetShouldAntialias(ctx, YES);CGContextSetLineWidth(ctx, self.circleBorderWidth);CGContextSetStrokeColorWithColor(ctx, self.maximumTrackTintColor.CGColor);CGContextAddPath(ctx, loadPath.CGPath);CGContextDrawPath(ctx, kCGPathStroke);CGContextRestoreGState(ctx);//起始位置做圆滑处理CGContextSaveGState(ctx);CGContextSetShouldAntialias(ctx, YES);CGContextSetFillColorWithColor(ctx, self.minimumTrackTintColor.CGColor);CGContextAddArc(ctx, self.circleStartPoint.x, self.circleStartPoint.y, self.circleBorderWidth / 2.0, 0, M_PI * 2, 0);CGContextDrawPath(ctx, kCGPathFill);CGContextRestoreGState(ctx);//valueUIBezierPath *circlePath = [UIBezierPath bezierPath];CGFloat originstart = -M_PI_2;CGFloat currentOrigin = originstart + 2 * M_PI * self.value;[circlePath addArcWithCenter:self.drawCenterradius:self.radiusstartAngle:originstartendAngle:currentOriginclockwise:YES];CGContextSaveGState(ctx);CGContextSetShouldAntialias(ctx, YES);CGContextSetLineWidth(ctx, self.circleBorderWidth);CGContextSetStrokeColorWithColor(ctx, self.minimumTrackTintColor.CGColor);CGContextAddPath(ctx, circlePath.CGPath);CGContextDrawPath(ctx, kCGPathStroke);CGContextRestoreGState(ctx);/** 计算移动点的位置* alpha = 移动点相对于起始点顺时针扫过的角度(弧度)* x = r * sin(alpha) + 圆心的x坐标, sin在0-PI之间为正,PI-2*PI之间为负* y 可以通过r * cos(alpha) + 圆心的y坐标来计算。* 不过我这里用了另外一个比较投机的方法,先算出亮点连线在y轴上投影的长度,然后根据移动点在y轴上相对于圆心的位置将这个绝对长度a和圆心y坐标相加减。*/double alpha = self.value * 2 * M_PI;double x = self.radius * sin(alpha) + self.drawCenter.x;double y = sqrt(self.radius * self.radius - pow((self.drawCenter.x - x), 2)) + self.drawCenter.y;double a = y - self.drawCenter.y;if (self.value <= 0.25 || self.value > 0.75) {y = self.drawCenter.y - a;}self.lastPoint = CGPointMake(x, y);self.thumbView.center = self.lastPoint;

http://www.ppmy.cn/news/1426609.html

相关文章

【重要】Perplexity订阅问题看这一篇就够了!Perplexity免费版和订阅版区别?免费使用G|P|T-4!

常见问题 Q&#xff1a;Perplexity是什么&#xff1f;Perplexity有什么用&#xff1f; A&#xff1a;Perplexity是一个AI搜索引擎&#xff0c;可以理解为可以检索网络结果的G|P|T&#xff0c;尤其是选中“Academic”后支持特定学术论文的检索。并且文献是真是可查到的而不是G|P…

Clion 2023.1.5 最新详细破解安装教程

CLion 最大的优点是跨平台&#xff0c;在Linux、Mac、Windows 上都可以运行。CLion 还同时支持 GCC、Clang、MSVC 这 3 种编译器&#xff0c;使用 CLion 编写程序&#xff0c;程序员可以根据需要随意切换使用的编译器。 第一步: 下载最新的 Clion 2023.1.5 版本安装包 我们先…

学习笔记-数据结构-线性表(2024-04-16)

设计一个算法判断单链表中元素是否是递增的。 设计思想&#xff1a;双指针操作 变量说明&#xff1a; head表示链表头指针 p和q表示两个用来遍历链表的指针节点&#xff0c;且q始终在p之后 bool IsIncrease(LinkList *head) {// 代码优先判空&#xff0c;若为空链表&#xff…

Flink 的 JDBC Table Source 支持分区扫描功能

Flink 的 JDBC Table Source 支持分区扫描功能&#xff0c;这可以加速并行任务实例中的数据读取。分区扫描允许 Flink 将数据表分割成多个部分&#xff08;分区&#xff09;&#xff0c;每个任务可以独立地读取一个分区的数据。这样做可以提高数据处理的并行性和效率&#xff0…

表和索引分片

1.分片表 1.1 分片/分区 分片 fragment是将一个表中的数据分布到不同的dbspace中。 SinoDB数据库支持智能化横向的表和索引分区&#xff0c;并将其称之为表和索引分片 。 分片允许您创建一个表&#xff0c;该表在SQL语句中被视为单个表&#xff0c;但由多个tbspaces组成。正常…

【命名空间详解】c++入门

目录 命名空间的定义 1.命名空间的正常定义 2.命名空间还可以嵌套 3. 命名空间可以合并 命名空间的使用 1.加命名空间名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 输入&#xff0c;输出 输出 命名空间的定义 …

数据结构_带头双向循环链表

List.h 相较于之前的顺序表和单向链表&#xff0c;双向链表的逻辑结构稍微复杂一些&#xff0c;但是在实现各种接口的时候是很简单的。因为不用找尾&#xff0c;写起来会舒服一点。&#xff08;也可能是因为最近一直在写这个的原因&#xff09; #pragma once #include<std…

CSS基础:盒子模型详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃&#xff0c;大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 We…