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

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(使用前将#替换为@)

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

  • 苹果拒绝任何访问UDID的应用程序,不支持Retina、iPhone 5显示屏?

    得到消息来自TNW http thenextweb com apple 2013 03 21 after a year of warnings apple will no longer accept any apps that use ud
  • CoreBluetooth 功能无法从 Singleton 运行

    所以我目前在 iPad 和 iPhone 之间建立了蓝牙连接 我已经在中创建了我的测试代码ViewController一切正常 现在我把它移到了 2 个经理类 第一个是CBCentralManager和一个用于CBPeripheralMan
  • iOS Swift 3 以编程方式将文件复制到 iCloud Drive

    在我的我有文档下载选项 当用户从我的应用程序下载文档时 我需要将其存储到已安装在用户手机中的用户 iCloud Drive 我已在 Web 和 Xcode 中配置了 iCloud 但问题是我无法将文件正确复制到 iCloud Drive 文
  • 使用离子框架的语音识别

    我正在寻找一种使用离子框架进行语音识别的方法 我想在 ios 和 android 设备上运行一个应用程序 目前 我在 ios 和 android 中提供网络视图 并有一个通用的代码库 我想为其添加语音识别功能并获取语音的输出 如果您在 Go
  • 动画 D3 地球仪 (d3.geo.azimuthal)

    我对 d3 javascript 库有疑问 我想使用方位角 http mbostock github com d3 talk 20111018 azimuthal html地球 我想从地球上的经度和纬度坐标插入点 并使地球动画化 而无需使用
  • NSString 到 TimeInterval

    我有一个 NSString 的格式00 00 00 00最初获得自 dateFormatter setDateFormat HH mm ss SS 我如何获取该字符串并将其转换为 TimeInterval 如果您 100 绝对肯定这种格式永
  • 如何获取 UIImage 的大小(以 KB 为单位)?

    有没有办法从 UIImage 获取以 KB 为单位的文件大小 而不从 didFinishPickingMediaWithInfo 获取该图像 所呈现的图像来自相册 我尝试了以下代码 但这给出了以下结果 图像大小 KB 0 000000 vo
  • 是否可以在不点击的情况下显示多个标记的多个信息窗口?

    我想在谷歌地图中显示多个标记的多个信息窗口 信息窗口应该在不点击标记本身的情况下显示 是否可以 经过研究 我了解到将标记设置为地图视图选定标记可以使信息窗口显示而无需点击它 但是 不能一次选择多个标记作为地图视图的选定标记 有什么可以做的吗
  • 我应该在哪里保存想要长期保留的数据和文件,以及如何防止 iCloud 备份它们

    我有任意类型的文件 包括核心数据存储库 我需要保留这些文件 并且不要让 iOS 删除它们 通常 我不希望 iCloud 备份这些文件 我应该把它们保存在哪里 iOS5 0 及更早版本 5 0 1 和 5 1 及更高版本中保存文件的本地更改主
  • iPhone Objective-C 以编程方式将范围按钮添加到 UISearchBar

    我目前这段代码用于创建 UISearchBar 改编自之前的 stackoverflow 示例 UISearchBar searchBar UISearchBar alloc initWithFrame CGRectZero searchB
  • iOS 11 /“Apps-prefs=root”功能在更新到 Swift 3 后不起作用

    我对 Swift 编程还很陌生 我制作了一个简单的测试应用程序 可以通过特定按钮以编程方式打开设置 不幸的是 更新按钮后 没有打开所需的设置页面 在本例中为 wifi 页面 而是仅打开通用设置屏幕 有人可以帮助我了解 swift 4 中究竟
  • Crashlytics 和答案套件的问题

    我在我的应用程序中使用 Crashlytics 来跟踪崩溃 并使用 Answers 工具包来处理自定义事件 我正在使用 pod 文件将框架集成到我的项目中 但是在添加两个 pod 时出现链接错误 pod Fabric pod Answers
  • 不透明动画在 IE 上不起作用

    我有一个动画菜单 其中包含一些级联不透明动画 这些动画在打开菜单和悬停每个按钮时执行 它只是每 100 毫秒向菜单上的每个图标添加 colorHigh 类 你可以看到一个现场演示在这里 http germanalvarez net 5 la
  • 识别用户是否在 iOS 6 设置中定义了本机 Facebook 帐户

    有没有办法通过 FACEBOOK SDK 3 1 和 iOS 6 知道用户是否在 iPhone 设置中定义了其 Facebook 帐户以供本机 Facebook 使用 我想要做的是 当打开我的应用程序时 如果用户在 iPhone 设置中定义
  • iOS 框架问题:类在两者中均实现

    我正在开发一个使用第三方框架类的iOS框架项目 所以我在下面添加了第三方框架链接的框架和库部分 当我在 iOS 应用程序项目中添加自定义框架时 每个类都会收到此警告 objc 3139 类 class name 在两者中均实现 privat
  • 在原始颜色和设置颜色之间设置动画背景

    我有带有随机初始背景颜色的 HTML 元素 我需要在原始 初始 和新元素之间对选定元素的背景颜色进行动画处理 我一直在尝试使用 keyframes blink red 0 background color initial color ini
  • Measure 应用程序是否有可用的 URL 方案?

    我想推出新的测量应用程序 在 iOS 12 上 在我的应用程序中 这可能吗 应用程序是否有可用的 URL 方案可用于此目的 或者还有其他方法可以做到吗 Thanks 您似乎无法打开此应用程序 In the 文档存档 https develo
  • 通过更改其优先级值来动画布局约束

    我有一个包含大量文本的标签 有一个用于折叠和展开标签高度的切换开关 此处名为 里拉套房 所以它会截断文本的结尾 我精心设置了垂直内容拥抱优先级和压缩阻力 因此内在尺寸比压缩阻力具有更高的优先级 高度限制 直接位于标签右侧的可选约束 设置为常
  • iOS应用程序启动黑屏,UINavigationController,Nib,RootViewController

    我有以下应用程序 其RootViewController被命名TopicsViewController 当我运行它时 没有任何错误或中断 但屏幕是black 没有桌子 无论是有人的还是空的 只有黑屏 不确定发生了以下哪一种情况 我的申请有问
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var

随机推荐

  • 使用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 在没有动画的情况下工作时 一切正常 但是当它有动画时