如何让动画和手势识别器协同工作? (迅速)

2023-11-30

我做了一个简单的项目,带有滑动手势识别器和动画。我让标签移动并且每 3 秒增加一次数字。每次滑动我都需要减少数量。我的手势识别器对象与标签绑定在一起,即它仅在标签范围内工作。当 prog 在没有动画的情况下工作时,一切正常,但是当它有动画时,我的手势识别器什么也不做。如何使手势识别器与动画同时工作,即以动画方式响应我的滑动。需要帮忙。

`

 @IBOutlet weak var label1: UILabel!

var number : Int = 0
var timer = Timer()

@IBAction func label1SwipeRight(_ sender: UISwipeGestureRecognizer) {
    number += 1
    label1.text = String(number)
}

func animate1() {
    UIView.animate(withDuration: 4.0, delay: 0.0, options: .allowUserInteraction, animations: {
        let num1 : CGFloat = CGFloat(arc4random_uniform(667))
        let num2 : CGFloat = CGFloat(arc4random_uniform(375))
        self.label1.frame.origin.y = num1
        self.label1.frame.origin.x = num2
    }, completion: {(bool) in
        self.animate1()
        print("Animation1 completed")
    })
}

func timerExample() {
    Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)

}

@objc func updateTimer() {
    label1.text = String(Int(label1.text!)! + 1)
}`

默认情况下,当动画“运行”时,视图对象会阻止用户交互。您需要使用“长格式”动画方法之一,并传入选项.allowUserInteraction。像这样的东西:

UIView.animate(duration: 0.5,
  delay: 0.0,
  options: .allowUserInteraction,
  animations: {
    myView.alpha = 0.5
  })

但请注意,如果您要设置动画的是视图的位置,则用户将无法在视图对象移动时点击它。这是因为位置动画并没有真正将对象随着时间的推移从一个地方移动到另一个地方。它只是创造了那种外观。在幕后,对象实际上在动画开始时跳到其最终位置。

如果您需要能够在对象移动时点击/拖动/滑动对象,则必须自己执行此操作。您所做的是将手势识别器放在包含整个运动范围(可能是整个屏幕)的父视图上。然后您需要使用动画视图层的表示层,将手势识别器的点的坐标转换为坐标空间到图层的坐标空间,并使用图层的 hitTest 方法来判断该点是否在图层上。

我在 Github 上有一个项目叫iOS-CAAnimation-group-demo它做了类似的事情(它沿着复杂的路径对图像视图进行动画处理,您可以点击图像视图以在动画“飞行中”时暂停动画。

这是几年前的内容,所以它是用 Objective-C 编写的,但它至少应该有助于说明该技术。

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

如何让动画和手势识别器协同工作? (迅速) 的相关文章

  • iOS 9.3 中的 KVO 被破坏

    这可能是 iOS 9 3 发行版 中的一个可怕的错误 添加单个观察者时 NSUserDefaults standardUserDefaults 我注意到响应方法 observeValueForKeyPath ofObject change
  • 寻找可靠的方法来选择iPhone 13微距相机设备

    我正在使用 objc 开发一个应用程序 我必须选择 iPhone 13 Pro 和 13 Pro Max 中配备的新微距摄像头 目前 我在所有其他设备上选择我的相机 并剪掉此代码 AVCaptureDeviceDiscoverySessio
  • 如何在注销并重新登录后保存按钮状态?

    我有一个保存按钮 点击该按钮后 会将标签 quoteLabel 中的文本保存到 Firebase 中的用户帐户 然后该按钮将隐藏 并且取消保存按钮将不再隐藏 以便用户可以根据需要取消保存 这两个按钮都可以根据需要发布和删除数据 但是 如果我
  • 在 iOS 上构建 WebRtc

    我按照以下说明成功地在 MAC 上构建了 WebRTC http www webrtc org reference getting started http www webrtc org reference getting started
  • 如何在ios开发中从mp3文件中提取元数据

    我正在开发一个带有云存储的 ios 音乐播放器 我需要提取音乐信息 如标题 艺术家 艺术作品 我有一个名为 playit 的操作 可以播放和暂停 mp3 文件 它还应该使用与 mp3 文件关联的元数据来填充一些 UILables 和 UII
  • 为什么我需要 2 个或更多核心数据模型?

    我很想知道谁使用多个核心数据模型以及为什么 有什么好处 我正在开发一个应用程序 我认为我可以从多个模型中受益 但我不确定其他好处 我即将推出的应用程序将适用于 iPad 和 iPhone 的另一个版本 iPad 有 3 个主要内容 iPho
  • tableView:canEditRowAtIndexPath: 弹出 viewController 时崩溃

    我有一个带有UITableView 我允许通过滑动来编辑 删除 的行 就像在邮件应用程序中一样 我用以下方法来做到这一点 BOOL tableView UITableView tableView canEditRowAtIndexPath
  • 核心数据executeFetchRequest消耗大量内存

    我正在核心数据数据库中插入 cca 100 000 条记录 数据库包含 3 个实体 球员 俱乐部 球员俱乐部 实体之间存在关系 玩家 gt 玩家俱乐部俱乐部 在 PlayerClub 中插入时 我注意到插入大约 50 000 条记录后会消耗
  • Objective c RSA 与 OAEP 填充 sha256 之前的 ios 10

    我正在研究一种在iPhone中使用RSA加密方法的加密方法 到目前为止我可以用这种方法实现获取加密字符串 该字符串被服务器成功解密 SecKeyRef keyRef self addPublicKey pubKey SecKeyAlgori
  • 使用 HTTP NSURL 创建 AVAsset

    我正在尝试合并两个NSURLs包含视频参考 其中一个 URL 指向 AWS 上的视频 另一个 URL 指向本地存储的视频 我的导出代码有效 因为我已经尝试使用两个本地视频 但每当我尝试合并 HTTP url 和本地 url 时 我都会收到此
  • 如何获得 UICollectionView 的矩形

    我想在 UICollectionView 中找到节标题的框架 我对 UITableView 也有类似的情况 为此 我能够通过执行以下操作来获得其正确性 CGRect rect self tableView rectForHeaderInSe
  • 如何在 Swift 中使用函数数组

    我已经阅读了我可以在这里找到的所有关于函数数组的帖子 太棒了 你能做到 我估计 但没有一篇文章实际上展示了如何使用它们 至少不是我想要做的 这就是我想要的 它们都可以采用相同的参数 但这不是必需的 这篇文章很接近 将允许我循环执行每个函数
  • 在 XCode 中本地化 HTML 文件

    我有一个本地化的 iOS 应用程序 我希望在其中包含一些本地化的 HTML 文件 我不知道该怎么做 目前 我的文件夹结构如下所示 myapp en lrproj Localizable strings fr lrproj Localizab
  • AST 文件格式错误或损坏

    我有一个问题 我不知道为什么会发生这种情况 但很可能是因为我错误地按了 移动到垃圾箱 到某些系统框架 我收到一条错误消息 AST 文件格式错误或损坏 找不到 AST 文件引用的文件 Users username myProject Quar
  • Swift 字典映射 - 闭包中的 init

    我有 Swift 字典 private var params String AnyObject 这包含查询项目 例如 lat 40 lon 100 我想将这本词典映射到NSURLQueryItem大批 我想让它 迅速 params map
  • iOS 上的推送通知渐进式 Web 应用程序

    我需要开发一个集成了推送通知的渐进式网络应用程序 在网上搜索我发现了关于这个主题的不同意见 如果我理解正确的话 目前我们无法在移动版 safari 中推送通知 但仅限桌面版 这样对吗 你有什么建议来获得相同的结果吗 我不是iOS专家 我想知
  • 如何从 App Store Connect 中删除自动创建的 macOS 应用程序

    I have an iOS app Recently macOS app automatically appeared in App Store Connect 我不打算在 macOS 上发布 iOS 应用程序 我怎样才能摆脱它 我打开了
  • 在 Swift 中将 xib 分配给 UIView

    在 Objective C 中 它可以在 init 方法中完成 id init self NSBundle mainBundle loadNibNamed ViewBtnWishList owner 0 options nil object
  • Xcode 中的 Prefix.pch 文件是什么?

    许多开发人员正在向其中添加各种方便的宏Prefix pch 但我的问题是那是什么Prefix pch file 如果我删除它Prefix pch来自我的文件Xcode 那么我的应用程序会运行吗 或者会显示什么错误吗 或者它会在构建过程中崩溃
  • 初始化Object中的空字符串?

    有人使用以下方法来初始化 NSstring NSString astring NSString alloc init 我想知道为什么不直接使用 NSString atring nil or NSString astring 没有semant

随机推荐

  • 使用Java读取图像文件的有效方法

    我在用javax imageio ImageIO read 读取位于 Windows 临时位置的大小为 5 mb 的图像几乎需要 9 秒 PFB 是 Jprofiler 的屏幕截图 我想要一种更有效的方法 可以将时间减少到至少 2 3 秒
  • iPhone上收到通知时(不是点击打开通知后)会触发哪个方法?

    我现在正在使用didReceiveRemoteNotification然而 要获取从 Parse 推送的通知的有效负载 它仅在点击并打开通知时触发 我想做的是启动警报来提醒用户通知已到达 所以我想didReceiveRemoteNotifi
  • 如何在Python中的一行中追加多个项目

    I have count 0 i 0 while count lt len mylist if mylist i 1 mylist i 13 and mylist i 2 mylist i 14 print mylist i 1 mylis
  • Xcode 界面生成器中的图像资源大小

    如果我在 Xcode 中的界面构建器上添加图像视图 并且其大小为 200 x 100 Xcode 中的大小 我如何知道将图像资源设置为 1x 2x 和 3x 的大小 如果我在 3x 的 Photoshop 中将其设置为 600x300 像素
  • 在使用 Ajax 生成的表单上使用 jquery 验证插件

    使用 jQuery 验证插件时 如何验证使用 ajax 生成的表单 我的意思是问 当页面加载时 表单最初不会出现在页面上 而是使用ajax添加到页面中 我正在关注以下示例bassistance de jquery plugins jquer
  • iOS编辑tableview隐藏单元格中的子视图

    我有一个关于编辑 UITableView 的问题 我想知道当点击删除控件并出现删除按钮时如何隐藏子视图 我已经弄清楚如何在点击删除按钮时隐藏子视图 但为时已晚 我使用以下代码来完成该任务 void tableView UITableView
  • 如何使用 jOOQ 从模板生成带有参数顺序的 SQL?

    我使用 jOOQ 3 11 11 生成这样的 SQL 模板 DSLContext context new DefaultDSLContext conf Query query context select from table1 where
  • 在服务器上调用 Collection.insert 时,“Meteor 代码必须始终在 Fiber 内运行”

    我在 server statusboard js 中有以下代码 var require meteor bootstrap require request require request function getServices servic
  • 使用 Quarkus Rest Data Panache 时如何从 @PrePersist 中的请求标头访问用户名

    我正在尝试记录修改实体的用户 反向代理正在请求标头中设置用户名 当使用 REST Panache 公开 JAX RS CRUD 时 如何从独立类读取请求和标头 下面是我尝试过的示例 但我得到了 null 或 null 指针 exep pac
  • 为什么正则表达式中的转义字符不匹配?

    如果我想匹配点符号 我必须写这个正则表达式 需要转义字符来匹配符号本身 如果我想匹配 d 符号 我必须写这个 d 转义字符是not需要匹配符号本身 如果我想匹配任何字符 或任何数字字符 d 反之亦然 在我看来 这种做法不太一致 其背后的理由
  • 未找到类型

    我刚刚更新了 angular cli v1 1 并使用创建了一个新项目ng new MyProj 然后我添加并安装了两个依赖项项目 json file dependencies toastr 2 1 2 spin 0 0 1 devDepe
  • 如何使用 openxml 在 Excel 文件单元格中的文本上应用字体和颜色

    我是 Openxml 新手 我正在尝试使用 openxml 创建 xlsx 文件 我想对Excel文件中不同单元格的文本应用不同的字体和颜色 我使用它来创建 xlsx 文件 但无法执行字体和颜色部分 SpreadsheetDocument
  • Python 3.6 urllib 为什么行以 b 开头

    我正在使用 python 3 并且不明白为什么输出在每个行的开头都有 b 我不认为 python 2 是这种情况 为什么会这样以及如何删除它 谢谢 import urllib fhand urllib urlopen http www py
  • AngularJS 通过选择空选项进行过滤

    我正在尝试为 AngularJS 中的表构建一个过滤系统 我有一个产品列表 每个产品都与一个系统绑定 我希望能够在选择中列出所有系统 并按所选系统过滤产品 除了选择空选择选项 该选项会过滤掉所有系统 之外 这非常有效 这是我的示例代码 控制
  • PyCharm 奇怪的类型警告[重复]

    这个问题在这里已经有答案了 为什么下面的代码会这样 v None for in range 3 v 1 0 lt lt lt 告诉我这个 意外类型 整数 整数 可能的类型 整数 无 切片 可迭代 无 消除此类警告的一个简单解决方法是添加类型
  • 在 MATLAB 中使用 sendmail 指定抄送地址

    MATLAB 的典型使用 调用sendmail函数看起来像这样 content body text attachments attachment pdf set preferences setpref Internet SMTP Serve
  • 如何检索实际的 OleDb 表架构(不包括其他表列)

    当我运行此代码时 它还会检索表中不存在的一些其他字段 我怎样才能克服这个问题 Dim conn As New OleDb OleDbConnection Create a connection string for an Access da
  • 从 C 到 Objective-C 的回调方法

    我有一个 Objective C 课程 我正在做的是在 Objective C 类中调用 C 函数 这个 C 函数是我在一个文件中实现的 该文件是这个示例 ios 项目的一部分 所有 C 函数都工作正常 到目前为止没有任何问题 当我尝试调用
  • 通过 PHP 使用 maxlength 标签检查表单输入长度

    我的问题很简单 如果我在 HTML 表单中有一些带有 maxlength 标记的输入字段 我也必须通过 PHP 检查输入长度吗 您应该这样做 因为任何人都可以 复制 您的表格并使用它 服务器端检查比客户端更好 它是安全的 例如 您的表格
  • 如何让动画和手势识别器协同工作? (迅速)

    我做了一个简单的项目 带有滑动手势识别器和动画 我让标签移动并且每 3 秒增加一次数字 每次滑动我都需要减少数量 我的手势识别器对象与标签绑定在一起 即它仅在标签范围内工作 当 prog 在没有动画的情况下工作时 一切正常 但是当它有动画时