渐变动画 - 减速和加速

2023-12-07

我正在制作一个动画CAGradientLayer,类似于苹果在 iPhone 主屏幕上使用“滑动解锁”动画的方式。然而我的动画有点不同,它在某些点会减慢和加速。

到目前为止,我的代码是一个渐变动画并且可以工作,但是我如何让它在不同的点减慢/加速呢?

class AnimatedMaskLabel: UIView {

    let gradientLayer: CAGradientLayer = {
    let gradientLayer = CAGradientLayer()
        // Configure the gradient here
        gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5)
        gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)

        let colors = [
            UIColor.black.cgColor,
            UIColor.white.cgColor,
            UIColor.black.cgColor
        ]
        gradientLayer.colors = colors

        let locations: [NSNumber] = [0.0, 0.5, 1.0]
        gradientLayer.locations = locations

        return gradientLayer
    }()

  @IBInspectable var text: String! {
    didSet {
      setNeedsDisplay()
    }
  }

  override func layoutSubviews() {
    layer.borderColor = UIColor.green.cgColor
    gradientLayer.frame = bounds
  }

  override func didMoveToWindow() {
    super.didMoveToWindow()

    layer.addSublayer(gradientLayer)

    let gradientAnimation = CABasicAnimation(keyPath: "locations")
    gradientAnimation.fromValue = [0.0, 0.0, 0.25]
    gradientAnimation.toValue = [0.75, 1.0, 1.0]
    gradientAnimation.duration = 3.0
    gradientAnimation.repeatCount = Float.infinity
    gradientLayer.add(gradientAnimation, forKey: nil)
  }

}

更新1:

enter image description here

为了使它看起来完全像我想要的那样,我需要使用CAMediaTimingFunction根本吗?


要使用关键帧动画,请尝试:

let gradientAnimation = CAKeyframeAnimation(keyPath: "locations")
gradientAnimation.values = [[0.0, 0.0, 0.25], [0.375, 0.5, 0.625], [0.75, 1.0, 1.0]]
gradientAnimation.duration = 3.0
gradientAnimation.repeatCount = Float.infinity
gradientLayer.add(gradientAnimation, forKey: nil)

这将在三个时间之间平均进行。要更改关键帧发生的时间,请设置keyTimes:

gradientAnimation.keyTimes = [0.0, 0.4, 1.0]

这将设置应为每个元素传递的动画百分比values反映动画的当前状态。这也应该具有相同的长度values.

I don’t actually know Swift, so this should work, but I can’t guarantee it.

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

渐变动画 - 减速和加速 的相关文章

  • 有关 Swift 编译器选项的文档

    您好 我想开始在 Apple Swift 语言上运行一些微基准测试 然而 我觉得很难找到有关编译器优化的不同选项的适当文档 我读过很多关于其他人的语言微基准的问题和文章 但是如果能有一些关于该主题的可靠文档那就太好了 在最新的测试版中 使用
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • 使用未解析的标识符“FlurryAdInterstitial”

    我正在尝试整合Flurry Interstitial Ads使用cocoapods in Swift and Xcode 7 1 1 我正在关注开发人员雅虎网站上的此文档 https developer yahoo com flurry d
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • UIViewControllerAnimatedTransitioning:旋转更改后黑屏片段

    我已经创建了一个视图控制器转换 只要我不更改设备方向 一切都正常 图 1 显示了应有的屏幕 然后我切换到下一个视图控制器 在其中更改方向 现在我回到第一个视图控制器并再次切换方向 然后我得到的结果如图 2 所示 出现黑色边框 请不要介意屏幕
  • Swift - 元类型 .Type 和 .self 之间有什么区别?

    元类型有什么区别 Type and self在斯威夫特 Do self and Type返回一个struct 我明白那个 self可以用来检查dynamicType 你如何使用 Type 首先也是最重要的是查看 Apple 文档type o
  • 如何在没有 SDK 的情况下在 Objective C 中为 S3 创建预签名 URL?

    我正在构建一个 mac 应用程序not使用 AWS iOS 开发工具包 我尝试构建的 GET 请求应遵循以下通用格式 Authorization AWS AWSAccessKeyId base64 hmac sha1 VERB n CONT
  • UItextView 背景颜色 Linespacing 区域太

    我正在尝试在 UITextView 中复制文本突出显示 不是搜索文本突出显示 但我也被行间距的颜色所困扰 我该如何纠正这个问题 现在的情况 期望的结果 我已将以下属性添加到我的 UiTextview 的属性文本中 对于段落行间距 我使用了以
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • UITableViewCell显示多种字体

    我想在 uitableviewcell 中以类似于 iPhone 地址簿的不同字体显示两个单词 例如 约翰Buchanan 您应该使用两个 UILable 或者您可以使用OH属性标签 https github com AliSoftware
  • 根据一个数组对多个数组进行排序

    如何根据数组对一堆数组进行排序createdAt 例如 2015 11 02 19 19 35 0000 将它们组合成另一种类型 字典 以便在 tableView 中使用是否有益 如果有的话如何 var comment AnyObject
  • 使用 MapKit 的地形和卫星视图

    我是 Mapkit View 的新手 当我给出没有目的地的纬度和经度时 我想显示 MapKit中是否可以通过地形 卫星视图来显示地图 有教程链接吗 我看过一些访问 Google 地图 API html 文件 的示例 有必要吗 或者您可以通过
  • 如何解决 Xcode 5 中的红色(已移动)文件?

    在 Xcode 4 中 当您要移动文件时 可以通过单击右侧菜单中的按钮并通过 Finder 选择新位置来解析文件的新位置 在 Xcode 5 中 右侧菜单中没有按钮 我还没有找到任何方法通过右键单击文件或顶部菜单栏选项来指定文件的新位置 在
  • Firebase ref.removeAllObservers() 是否也会递归删除子观察者?

    我看到了一些与此相关的问题 但没有一个真正证实了我的疑问 If I removeAllObservers 在父节点上 这是否也会递归地删除可能已附加在所有子节点和子节点的子节点等处的所有其他观察者 递归地 API 文档为removeAllO
  • 处理 UICollectionView 中的点击手势

    由于我无法使用任何框架来创建相册 因此我尝试使用 Collection View 创建自己的相册 但我一开始就陷入困境 我的目标是将网络服务中的所有图像显示到我的集合视图中 因为所有图像都已显示 下一步是当有人点击任何单元格时 我可以在新视
  • SpriteKit的更新函数:时间与帧率

    一般来说 我对编程和 Spritekit 很陌生 并且有兴趣探索毫秒和帧率之间的关系 以及如何使用更新函数作为两者之间的中介 帧率与毫秒 从本质上讲 帧速率和时间之间的主要区别在于时间始终一致 而帧速率则不然 由于密集的图形程序 它可能会下
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do

随机推荐

  • Terraform terraform_remote_state 部分配置

    我的团队严重依赖 Terraform 中的 S3 远程状态 我们使用 backend configCLI 的功能是在初始化项目时指定 S3 配置 因此我们实际的 terraform 代码如下所示 terraform backend s3 只
  • 正则表达式删除重复字母但不删除数字

    删除相邻重复字母但不删除数字的适当正则表达式是什么 例如 p11ppppl gt p11pl 我有以下正则表达式 w s 1 g 但这也会替换重复的数字 我会这样做 可视化here a zA Z 1 g 下面是一个 Python 示例 In
  • 当 x 趋于无穷大时如何绘制 f(x)

    我正在根据一些数据点绘制一条曲线 points 0 0 0 0 1 3 3 5 我希望它能够达到 比如说 当 x 达到时 y 10infinity 换句话说 要附加的额外 点 是 float inf 10 有没有办法告诉matplotlib
  • Image.onload() 的 JavaScript 循环/范围问题

    我正在尝试使用 JavaScript 循环访问一个对象 并将该对象的所有子对象添加到 HTML5 画布中 画布位正在工作 没有问题 但由于某种原因 我所有的图像最终都是相同的大小 最后一个子对象 背景 的大小 我假设它与我的循环和 this
  • 隐式定义的变量会引发运行时错误,而显式定义的变量则不会

    使用 VB NET 我尝试按照 ReSharper 的指南清理代码库 我目前有以下代码 oSearchInput is defined outside this question Dim oSearchRoutines As New Sea
  • 我想在java小程序中使用Robot类来让Web浏览器移动和单击鼠标

    我创建了这个小程序 它将鼠标移动到屏幕上的 1000 个位置 它可以作为应用程序运行 但不能在小程序中运行 我已经创建了签名小程序 但它仍然不会移动鼠标 我应该怎么做才能让我的机器人类在浏览器中工作 我的代码如下 import java a
  • 为什么我不能创建一个大小由全局变量确定的数组?

    为什么数组a没有被全局变量初始化size include
  • jqGrid:子网格不填充数据

    我有一个子网格 当您单击 Cheese 旁边的 号时 会触发 ajax 查询 并且我会看到子网格列名称 但实际数据不会填充到子网格中 无论我尝试扩展哪个网格 问题都会发生 但 奶酪 示例如下所示 您可以在屏幕截图中 FireBug 输出的底
  • 在 ASP.NET MVC 中匹配跨多个“/”的 URL 参数

    在 ASP NET MVC 中匹配跨多个 的 URL 参数的最佳方法是什么 Eg URL http example com controller action p1 p2 p3 p4 我只想将一个参数传递给操作方法 上面是 p1 p2 p3
  • scapy 数据包操作和原始 pkt.time

    我有 python scapy 和平代码将我的数据存储到数据库中 IP src 和 dst 端口 我用它来进行一些统计 在某些数据包上 我正在执行一些操作 更改目标端口 然后将它们发送回接口 问题是我正在操作的这个数据包具有与原始数据包不同
  • 如何在nodejs中使用getRandomValues()?

    我正在使用 Javascript 生成wireguard 密钥对 但它是面向浏览器的 因此我删除了窗口对象 并且还有一个阻止创建私钥的问题 问题是这行代码我无法在nodejs中运行 function generatePresharedKey
  • BigQuery 试运行会返回什么?

    BigQuery 文档说 在表的较小分区而不是一个大表上测试查询 如果使用 API 请验证查询的语法并使用 dryRun 标志获取数据处理统计信息 但他们也表示 对于 dryRun 如果设置 则不会实际运行查询 有效的查询将返回空响应 而无
  • 调用 GBrowserIsCompatible() 时 Google 地图 API JavaScript 错误

    我在以下行中收到错误 if GBrowserIsCompatible 这是我的代码仍然无法工作
  • 尝试将 SELECT SCOPE_IDENTITY() 作为 C# 变量

    我正在一个表中插入一行 然后想要获取该新 ID 以便我可以将其添加到存储电子邮件地址的另一个变量中 var db Database Open myDB var insertCommand1 INSERT INTO myDB FirstNam
  • 寻找指南针 2 度之间最接近的差异 - Javascript

    我基本上是想找出指南针上两个点相距多少度 例如 如果一个人面朝 270 度 而指南针为 280 度 那么这两点之间就有 10 度 如果相对于第一个标题 它在左侧 我还想要一个负数 在右侧则为正数 例如 当 to 标题为 350 和 020
  • 防止选择和复制

    我想在 html 页面中不活动选择和复制文本 当我使用 Javascript 且处于非活动状态时 右键单击用户可以使用 Ctrl V 你不能 甚至不要尝试 不要惹恼你的用户 如果您将其公开发布在网络上 则可以复制 从技术上讲 用户一看到它就
  • 如何使用 Spring AOP 和 SPring boot 进行日志记录

    我使用与本示例教程中相同的 LoggingAspect 类https www javaguides net 2019 05 spring boot spring aop logging example tutorial html 但是当我调
  • 困惑为什么 PyGame 显示黑屏

    因此 在我决定问这个问题之前 我做了一些研究 看看我的问题是什么 并发现了这一点 代码仅在 Pygame 窗口中产生黑屏然而 这并不是那么有帮助 因为我没有遇到与此人相同的问题 我确信我的 PyGame 没有过时或类似的东西 因为我的代码的
  • 添加程序集引用还需要引用基础程序集

    我创建了一个程序集 该程序集有一个子类 该子类派生自另一个程序集中定义的父类 当我添加对子项的引用时 Visual Studio 还要求将引用添加到父项 为什么会这样 如何在不丢失任何功能的情况下防止它 你所描述的情况是部分可能的 您可以消
  • 渐变动画 - 减速和加速

    我正在制作一个动画CAGradientLayer 类似于苹果在 iPhone 主屏幕上使用 滑动解锁 动画的方式 然而我的动画有点不同 它在某些点会减慢和加速 到目前为止 我的代码是一个渐变动画并且可以工作 但是我如何让它在不同的点减慢 加