快速连续旋转动画不那么连续

2024-03-26

这是我的代码。目的是连续旋转名为 swirls[l] 的 UIImageView。但是,每次旋转开始/结束之间都会有一个小暂停。我已经浏览了每一个动画教程,但无法弄清楚错误是什么?

let fullRotation = CGFloat(M_PI * 2)

    let duration = 2.0
    let delay = 0.0
    let options = UIViewKeyframeAnimationOptions.Repeat | UIViewKeyframeAnimationOptions.CalculationModeLinear

    UIView.animateKeyframesWithDuration(duration, delay: delay, options: options, animations: {
        UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 1/3, animations: {
            swirls[l].transform = CGAffineTransformMakeRotation(1/3 * fullRotation)
        })
        UIView.addKeyframeWithRelativeStartTime(1/3, relativeDuration: 1/3, animations: {
            swirls[l].transform = CGAffineTransformMakeRotation(2/3 * fullRotation)
        })
        UIView.addKeyframeWithRelativeStartTime(2/3, relativeDuration: 1/3, animations: {
            swirls[l].transform = CGAffineTransformMakeRotation(3/3 * fullRotation)
        })

        }, completion: {finished in 
    })

编辑:我看到有人建议以前的解决方案可用,但它根本不适用于连续不间断的旋转。对我有用的唯一技巧是我在下面选择的答案。谢谢


尝试以下 swift 4 的扩展。

extension UIView {
    func rotate360Degrees(duration: CFTimeInterval = 3) {
        let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
        rotateAnimation.fromValue = 0.0
        rotateAnimation.toValue = CGFloat(Double.pi * 2)
        rotateAnimation.isRemovedOnCompletion = false
        rotateAnimation.duration = duration
        rotateAnimation.repeatCount=Float.infinity
        self.layer.add(rotateAnimation, forKey: nil)
    }
}

用于开始旋转。

MyView.rotate360Degrees()

和停止。

MyView.layer.removeAllAnimations()

您可以使用UIButton, UILabel还有很多。

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

快速连续旋转动画不那么连续 的相关文章

随机推荐

  • 面向 Android 12 及更高版本的应用需要为“android:exported”指定显式值 [Cordova]

    当我在 GitHub 中运行 Apk 时 出现错误 当我在 GitHub 中构建 Apk 时 无法定义清单内的某些内容 因为它每次都是新鲜构建的 我所能做的就是在 Config Xml 文件中 添加后android exported fal
  • 在 Android Edittext 中设置特定文本的文本颜色

    如果用户键入一个字符串并且它包含 我想将文本的颜色更改为红色 我尝试过使用 textwatcher 但出现堆栈溢出错误 我只想在 开头时更改颜色 代码如下 topic addTextChangedListener new TextWatch
  • 可重入锁用例

    我对Java的多线程概念很差 我正在了解 ReentrantLock 的功能和用法 我发现它比同步更灵活 并且添加了更多功能 我可以看到上面提到的例子并且我很好地理解了 我无法弄清楚它到底对业务有何帮助的实时场景 我认为最好避免僵局 有人可
  • 对话框中的 Xtext DSL 嵌入式编辑器

    我是 xtext 的新手 我已经使用 xtext 创建了 DSL 并且生成了工件 这生成了具有许多功能 如内容辅助和语法着色 的编辑器 现在的问题是我想将编辑器嵌入到对话框中 为了实现此目的 我使用嵌入式编辑器 我能够获取嵌入式编辑器并将其
  • C++ 父类对齐

    是否可以指定父类的对齐方式 例如类似的东西 未编译 template
  • 检查是否已经是用户然后插入数据库 php

    如果我想插入数据库 我的代码可以工作 但是我检查用户是否已经存在不起作用 我认为这个想法是检查该用户名是否已经存在一行 如果是 则不要将该用户添加到数据库中 否则 email POST email password password has
  • 全局应用程序中的个人名称:存储什么[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Storing 个人姓名 http en wikipedia org wiki Personal name对于来自许多不同国家的用户使
  • 软件包“pecl.php.net/intl”没有可用的版本

    我正在尝试为 php 安装 intl 当我跑步时sudo pecl install intl它给了我一个错误No releases available for package pecl php net intl 我尝试过清除缓存 也尝试过升
  • 使用 bash 从文本文件中读取字符

    有谁知道如何使用 bash 脚本从文件中读取前两个字符 有问题的文件实际上是一个 I O 驱动程序 其中没有换行符 并且实际上无限长 The read内置支持 n范围 echo Two chars while read n 2 i do e
  • 从 Web 项目中排除 node_modules 目录

    如果我右键单击我的项目并选择 发布 Web 项目 我将收到有关目录名称长度的错误 我已经追踪到了node modules 我想从进程中排除该目录及其内容 我们使用一个 pubxml文件 我尝试添加以下内容之一或以下内容的组合
  • 强制渲染已计算的反应元素

    我正在尝试构建一个闪亮的应用程序 通过不同的 render 函数输出多个结果 问题是其中一个结果需要一些时间来计算 所以我希望shiny能够尽快渲染出快速的结果 这是一些代码来说明 ui R library shiny shinyUI fl
  • C++20 模块导出模板实例化

    我正在创建一个库 并且 C 20 模块内有一个类模板 我想添加一个实例化 以减少使用我的库的每个项目的编译时间 这些不同的实现是否等效 或者是否有更好的方法来实现 1 mod cpp export module mod export tem
  • QProcess未知错误

    我遇到了奇怪的问题 QProcess 只是不工作 并且错误未知 我在标头中有全局变量 QProcess importModule 我得到了这个功能 我尝试了start and startDetached顺便说一句方法 void App op
  • jQuery UI 在搜索之前自动完成显示结果

    我希望在我的项目中在关注自动完成输入之前显示一些初步结果 这些结果应该与自动完成 ajax 请求的结果相同 我可以通过自动完成的标准选项来做到这一点 还是应该编写相同的 JavaScript 代码 您应该设置minLength选项0 如果您
  • 如何使用javascript下载网页[重复]

    这个问题在这里已经有答案了 可能的重复 Javascript 可以读取任何网页的源代码吗 https stackoverflow com questions 680562 can javascript read the source of
  • 打印 C 字符串(UTF-8)时的 NSLog() 与 printf()

    我注意到 如果我尝试使用格式说明符 s 打印包含 UTF 8 字符串表示形式的字节数组 printf 说得对 但是NSLog 得到它乱码 即 每个字节按原样打印 因此例如 被打印为2个字符 这很奇怪 因为我一直认为NSLog 只是print
  • 如何根据条件 $push 字段?

    我试图在 MongoDB 聚合管道的 group 阶段有条件地将字段推入数组 本质上 我有包含用户名的文档以及他们执行的一系列操作 如果我将用户操作分组如下 group id name user name actions push acti
  • rows_merged在compactionhistory中意味着什么?

    当我发出 nodetool compactionhistory I get compacted at bytes in bytes out rows merged 1404936947592 8096 7211 1 3 3 1 什么是 1
  • 允许在 ckeditor 中嵌入 oembed 标签

    我想将 oembed 标签放入 TYPO3 的 ckeditor RTE 中 这样我想将像 Instagram Facebook 或 Twitter 这样的社交帖子放入一些新闻文章中 在一些文本的中间 为此 我激活了 ckeditor 的嵌
  • 快速连续旋转动画不那么连续

    这是我的代码 目的是连续旋转名为 swirls l 的 UIImageView 但是 每次旋转开始 结束之间都会有一个小暂停 我已经浏览了每一个动画教程 但无法弄清楚错误是什么 let fullRotation CGFloat M PI 2