iOS 圆形渐变

2023-12-30

我的任务是用圆形渐变绘制线条(颜色应按圆圈变化),然后添加动画。现在我画了360层,有一定的间隔和不同的颜色。

var colours: [UIColor] = [UIColor]()
var startAngle = CGFloat(-0.5 * Double.pi)
var index = 0

func drawLayers() {
    let smallAngle = (1.5 * CGFloat.pi - (-0.5 * CGFloat.pi)) / 360

    if index < colours.count { //colours.count = 360
        let endAngle = startAngle + smallAngle
        let circlePath = UIBezierPath(arcCenter: .init(x: 100, y: 100), radius: 100, startAngle: startAngle, endAngle: endAngle, clockwise: true)
        startAngle = endAngle
        let shapeLayer = CAShapeLayer()
        shapeLayer.path = circlePath.cgPath

        shapeLayer.fillColor = UIColor.clear.cgColor
        shapeLayer.strokeColor = colours[index].cgColor
        shapeLayer.lineWidth = 8

        view.layer.addSublayer(shapeLayer)

        index += 1

        Timer.scheduledTimer(
            withTimeInterval: 0.004,
            repeats: false) { (_) in
                self.drawLayers()
        }
    }
}

类似的东西,但带有线性动画

谁能告诉我怎样做才是正确的?


iOS 现在内置了圆形(圆锥形)渐变。所以我只需要一次渐变,然后为用作蒙版的单个路径设置动画。这只是两层,工作量少得多,真正的动画和真正的渐变。

Example:

这是我的测试代码;根据需要更改颜色和数字:

    let grad = CAGradientLayer()
    grad.type = .conic
    grad.colors = [UIColor.red.cgColor, UIColor.green.cgColor, UIColor.red.cgColor]
    grad.startPoint = CGPoint(x: 0.5, y: 0.5)
    grad.frame = CGRect(x: 100, y: 100, width: 200, height: 200)
    self.view.layer.addSublayer(grad)
    let c = CAShapeLayer()
    let p = UIBezierPath(ovalIn: CGRect(x: 20, y: 20, width: 160, height: 160))
    c.path = p.cgPath
    c.fillColor = UIColor.clear.cgColor
    c.strokeColor = UIColor.black.cgColor
    c.lineWidth = 8
    grad.mask = c
    c.strokeEnd = 0

要使动画发生,只需说:

    c.strokeEnd = 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 圆形渐变 的相关文章

  • 将 MPMoviePlayerController 的视图添加到 UIView

    我想添加MPMoviePlayerController to a UIView 首先 我在 xib 文件中放置了一个视图 名为 youTubeView youtube播放器是MPMoviePlayerController youtubePl
  • iOS 无法获取人物图像

    我有两个 tableViewController 第一个有联系人列表 另一张显示详细的人员信息 第一个tableViewController的一段代码 ABAddressBookRef addressBook ABAddressBookCr
  • 在 iOS 7 中查看 Core Data 创建的 sqlite 文件时出现问题

    当我尝试访问由核心数据创建的数据库文件时遇到问题 DB 文件位于 Documents 文件夹中 我已将其复制到桌面并使用 Firefox 插件打开它 Hello sqlite文件不包含任何行我有使用核心数据插入值 我正在使用 iOS 7 模
  • iPhone:每日本地通知

    我正在尝试实现本地通知 这就是我所设置的 Current date NSDate date NSDate date Add one minute to the current time NSDate dateToFire date date
  • UICollectionView 设置列数

    我刚刚开始学习 UICollectionViews 我想知道是否有人知道如何指定集合视图中的列数 默认设置为 3 iPhone 肖像 我查看了文档 似乎找不到简洁的答案 对于 Swift 5 和 iOS 12 3 您可以使用4 以下实现为了
  • Swift 语言中的 #ifdef 替换

    在 C C Objective C 中 您可以使用编译器预处理器定义宏 此外 您可以使用编译器预处理器包含 排除代码的某些部分 ifdef DEBUG Debug only code endif Swift 中有类似的解决方案吗 是的 你可
  • Swift Siesta 访问响应原始数据

    我的 API 中有一个返回 PDF 文件内容的方法 如何在成功回调中获取响应的原始数据 所有午睡响应均以原始数据开始 以基础类型的形式Data 然后运行变压器管道 http bustoutsolutions github io siesta
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • 单击按钮时退出应用程序 - iOS [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 4 0 中退出应用程序 https stackoverflow com questions 3097244 exit application in ios 4 0 我有一个 AlertView
  • “无法取消归档名为 UITableViewController 的元素”

    我一直在按照 构建你的第二个 iOS 应用程序 教程一步步进行 在教程承诺所有错误都会消失之后 我遇到了这个错误 但直到其他错误都出现后 该错误才出现 全部更正 我尝试编译它 错误 The document MainStoryboard i
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • Swift 中通过可选绑定进行安全(边界检查)数组查找?

    如果我在 Swift 中有一个数组 并尝试访问超出范围的索引 则会出现一个不足为奇的运行时错误 var str Apple Banana Coconut str 0 Apple str 3 EXC BAD INSTRUCTION 但是 我会
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • Swift - 保存在 TableView 中选择的复选标记

    我对 Swift 相当陌生 并且在 TableView 多重选择方面遇到问题 我有多个选择 可以用复选标记进行检查 类似于待办事项列表 当我检查项目时 我希望能够返回 ListView 并保存我的选择 我假设将其保持在已保存状态的代码将位于
  • iOS:如何创建核心数据库的备份副本?以及如何导出/导入该副本?

    我想为我的应用程序的用户提供创建核心数据数据库备份的可能性 特别是在他切换到新设备等情况下 我该怎么做呢 特别是如何重新导入该文件 我的意思是 假设他制作了数据库的备份副本 然后更改了大量内容并想要重置为以前保存的备份副本 我该怎么做呢 T
  • 如何在 SwiftUI 中延迟动画?

    我想为两个文本字段设置动画 第二个字段有延迟 但它不起作用 没有延迟 它们同时从位置 100 动画到 0 这是代码 State private var offset CGFloat 100 State private var offset2
  • 隐藏 UITableview 单元格

    我正在尝试从 UITableView 中隐藏单元格 就像删除操作一样 但我只想隐藏它以便稍后在相同位置显示它 我知道 UITableViewCell 有一个名为 隐藏 的属性 但是当我使用此属性隐藏单元格时 它会隐藏但没有动画 并且会留下空
  • 如何安全地重命名 iOS 分发配置文件?

    我几个小时前刚刚提交了我的第一个应用程序 现在处于 等待审核 状态 但我犯了一个错误 我已经命名了我的分配配置文件My Company Distribution Profile 我应该做的事情被命名为我的发行版配置文件My GAME Dis
  • 从 URL 解析 JSON 最终出现错误 - Swift 5

    我正在尝试用 swift 编写一个函数 从 URL JSON 获取数据 并将其分配给 swift 中的变量 这是函数 func getBikeData guard let url URL string https api citybik e
  • 从应用程序内发送电子邮件中的图像和文本

    如何从我的应用程序内通过电子邮件发送图像和文本 表格数据形式 请大家帮忙并提出建议 谢谢 void sendMailWithImage UIImage image if MFMailComposeViewController canSend

随机推荐

  • 创建对 IObservable 的弱订阅

    我想要做的是确保如果对我的观察者的唯一引用是可观察的 它会被垃圾收集并停止接收消息 假设我有一个带有列表框的控件 称为 消息 后面的代码如下 Short lived display of messages only while the us
  • jquery lavalamp 的问题

    由于某种原因 无论我点击哪个链接 我的背景颜色都会回到最左边的链接 有人知道如何让它保留在点击的链接上吗 css lamp float left margin 25px 0px 0px 90px clear both lavaLamp po
  • 异步编程 APM 与 EAP

    实际上有什么区别异步编程模型 and 基于事件的异步模式 使用哪种方法以及何时使用 The 异步编程模型 APM 是您看到的模型BeginMethod and EndMethod pairs 例如这里是一个Socket使用APM执行 var
  • 如果 Moose 构建器方法失败该怎么办?

    处理构建器方法中的失败的最佳方法是什么 例如 package MyObj use Moose use IO File has gt file name is gt ro isa gt Str required gt 1 has gt fil
  • 使用时间窗口的标签回填缺失数据

    我想根据时间 1天 2天 用不同的标签回填每一列 这是代码 from datetime import datetime timedelta import pandas as pd import numpy as np import rand
  • NSToolbar的标签区域可以画图吗?

    我有一个NSToolbarItem它使用类似于 Xcode 状态视图的视图 它目前没有标签 但我无法找到一种方法来绘制通常绘制项目标签的区域 我希望该视图能够像 Xcode 状态视图一样扩展到该区域 我知道像素的最底部部分NSToolbar
  • 将列表转储到 pickle 文件中并稍后检索[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试保存字符串列表 以便以后可以访问它 使用pickle如何实现呢 一个说明性的例子可能会有所帮助 Pickling 将序列化您的列
  • 使用 Fold 依赖多个先前值来计算线性递归的结果

    I have a linear recurrence problem where the next element relies on more than just the prior value e g the Fibonacci seq
  • 我应该在创建通知之前调用 WakeLock 吗?

    我正在向 Android 应用程序添加通知 目前只有模拟器可供测试 收到通知时 将调用 GCMBaseIntentService 子类 GCMIntentService 中的 onMessage 方法 从这里我创建一个要显示的通知 如果我将
  • Kubernetes集群出站流量IP

    我在 Google Kubernetes Engine 上有一个 Kubernetes 集群 我想为集群的所有传出流量分配一个静态 IP 我已经保留了外部 IP 但无法使用 GCP 控制台将它们分配给集群 我找到了一个使用 cli 执行此操
  • 数据读取器检索数据

    我的数据库中有会员资格和预订表 其中包含属性 cust id 它是会员资格中的主键和预订中的参考键 当我执行数据读取器时 我希望它从会员表中读取 cust id 值 但它是从预订表中读取的 另外 当我比较两个 cust id 值时 1 个取
  • 通过 PayPal iOS SDK 进行 PayPal 实时交易的问题

    我正在为 iPad 开发 iOS 应用程序 版本 7 x 我们需要通过应用程序执行 PayPal 交易 我们包含了 PayPal iOS SDK 并参考他们的示例代码来执行交易 示例代码放置在here https github com pa
  • AWS Lambda 和 .NET Core - 使用 Linux 运行时?

    我正在用 C NET Core 编写 Alexa 技能 以便从 AWS Lambda 函数 在 Amazon Linux 上运行 运行 当我编译项目时 点网发布 我收到错误 找不到框架 NETCoreApp Version v1 0 的运行
  • 需要一点数学帮助来调整图像大小

    我有一个具有 X 宽度和 Y 高度值的图像 现在我想将高度设置为 60px 通过哪种计算我可以计算出图像正确调整大小的高度 我认为你正在努力保持纵横比 如果是这样 请使用以下命令 比率 原始高度 新高度 新宽度 原始宽度 比例
  • 在 Python (Pycharm) 中导入 numpy,安装了 Anaconda

    我对 python 很陌生 我正在尝试编写代码来导出一阶 ODE 因此 我需要某些软件包 例如 numpy 来执行此操作并安装了 Anaconda 当我尝试在 PyCharm 中使用 import numpy 命令时 它不起作用 我收到 M
  • 对产品列表进行分类的算法?拿2

    我问了一个类似的问题 https stackoverflow com questions 695347 algorithm to classify a list of products几周前就问过这个问题 但我没有正确地提出这个问题 所以我
  • 无法将 R 数据帧转换为 Spark DataFrame

    当我尝试使用以下方法将 R 中的本地数据帧转换为 Spark DataFrame 时 raw data lt as DataFrame sc raw data 我收到此错误 17 01 24 08 02 04 警告 RBackendHand
  • 如何禁用 OpenCV 相机中的缓冲区?

    我遇到过这种情况 我使用 OpenCV 来检测相机前面的人脸 并对这些人脸进行一些机器学习 我遇到的问题是 一旦我完成所有处理 并去抓取下一帧 我得到的是过去 而不是现在 意思是 我将读取缓冲区内的内容 而不是实际在相机前面的内容 由于我不
  • 在 C# 中克隆 VSTS 构建定义

    我正在使用 BuildHttpClient 的 GetDefinitionAsync 和 CreateDefinitionAsync 来克隆 VSTS 构建定义 这工作正常 但我想在项目的根文件夹之外的不同文件夹中创建构建定义 我可以通过
  • iOS 圆形渐变

    我的任务是用圆形渐变绘制线条 颜色应按圆圈变化 然后添加动画 现在我画了360层 有一定的间隔和不同的颜色 var colours UIColor UIColor var startAngle CGFloat 0 5 Double pi v