UIImage 更改时动画快照

2023-12-12

我有一个 UIImageView,当按住按钮时它会在屏幕上运行。当按下按钮时,将更改 UIImageView 的 UIImage,当松开按钮时,我将其更改为其原始 UIImage。当图像变回原样时,它会恢复到图像开始的位置。

按下按钮时调用此计时器:

//This is the image that changes when the button is pressed.
imView.image = image2;
runTimer = [NSTimer scheduledTimerWithTimeInterval:0.04
                                            target:self
                                          selector:@selector(perform)
                                          userInfo:nil
                                           repeats:YES];

这称为当按钮停止被按住时:

- (IBAction)stopPerform:(id)sender{
   [runTimer invalidate];

   //THIS IS WHAT SNAPS THE ANIMATION BACK:
   //Without this the animation does not snap back
   imView.image = image1;
}

- (void)performRight{

 CGPoint point0 = imView.layer.position;
 CGPoint point1 = { point0.x + 4, point0.y };

 CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position.x"];
 anim.fromValue    = @(point0.x);
 anim.toValue  = @(point1.x);
 anim.duration   = 0.2f;
 anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

 // First we update the model layer's property.
 imView.layer.position = point1;

 // Now we attach the animation.
 [imView.layer  addAnimation:anim forKey:@"position.x"];
}

我需要将图像的变化添加到动画中吗?如果是这样怎么办?我真的很困惑。


核心动画使用不同的属性集来表示一个对象:

From 核心动画编程指南:


模型层树(或简称为“层树”)是您的应用程序与之交互最多的层。此树中的对象是存储任何动画的目标值的模型对象。每当您更改图层的属性时,都会使用这些对象之一。

演示树包含任何正在运行的动画的飞行中值。图层树对象包含动画的目标值,而演示树中的对象反映屏幕上出现的当前值。您永远不应该修改此树中的对象。相反,您可以使用这些对象来读取当前动画值,也许可以从这些值开始创建一个新动画。


因此,当您对属性进行动画处理时,您会更改表示层,但动画完成后,对象将恢复为其模型属性值。

您需要做的就是使用[CAAnimation animationDidStop:finished:]委托方法来设置最终属性值以及您想要执行的任何其他操作。我想你可以用这个来摆脱那个可怕的事情NSTimer你正在使用的代码和世界的一小部分将会变得更好。

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

UIImage 更改时动画快照 的相关文章

  • iOS-将图像转为视频时,CVPixelBufferCreate内存无法正确释放

    我正在将图像制作成视频 但总是因为内存警告而崩溃 分配太多CVPixelBufferCreate 我不知道如何正确处理 我看过很多类似的主题 但没有一个能解决我的问题 这是我的代码 void writeImagesArray NSArray
  • iOS SecItemCopyMatching RSA 公钥格式?

    我正在尝试从已生成的密钥对 两个SecKeyRefs 以便通过线路发送 我所需要的只是一个简单的 modulus exponent 对 它应该正好占用 131 个字节 模数为 128 指数为 3 但是 当我获取关键信息时NSData对象 我
  • 从软件查找服务返回无效结果

    我尝试通过 XCode 组织者提交 iOS 应用程序 但在身份验证后失败 组织者说 从软件查找服务返回的结果无效 我怎么解决这个问题 检查 iTunes Connect 中您的应用程序状态是否为 等待上传 您可以更改状态以按 准备上传二进制
  • 如何在 UITextView 中禁用放大功能

    我想摆脱 UITextView 中的放大和文本选择 但我需要电话号码 链接和地址检测器 我在用 void addGestureRecognizer UIGestureRecognizer gestureRecognizer if gestu
  • NSIndexpath.item 与 NSIndexpath.row

    有谁知道之间的区别NSIndexpath row and NSIndexpath item 具体来说 我在以下情况中使用哪一个 UITableViewCell tableView UITableView tableView cellForR
  • 如何使用群组在 iPhone 和 Apple Watch 之间共享数据?

    我是 Watchkit 开发新手 无法找到在 iPhone 和 iWatch 之间共享数据的解决方案 请帮助我 我希望使用组来共享数据 我们可以使用组在 iPhone 和 iWatch 之间传递数据 基本上iWatch不能做任何处理 我们需
  • iOS - 在 UITabBar 上方获取所需的阴影

    我试图让我的标签栏阴影看起来像这张图片中看到的那样 这样做的最佳方法是什么 我正在使用 Objective C Thanks 您可以使用以下代码为任何 UI 对象提供阴影 tabBar layer shadowOffset CGSize w
  • 在 iOS Safari 上滚动后锚点失去点击能力

    使用它来获取点击次数 nav li a click function event event preventDefault target this attr href replace goToByScroll target 这是滚动功能 f
  • 为什么我无法更改 UIBarButtonItem 的标题?

    我想改变UIBarButtonItem s title 但这段代码不起作用 void viewDidLoad self smay void smay AppDelegate apd AppDelegate UIApplication sha
  • 如何让位置音频在 SceneKit 中工作?

    我在使位置音频在 SceneKit 中工作时遇到问题 从 Xcode 生成的 SceneKit 游戏模板开始 我将以下代码添加到handleTap 方法的末尾 let ship scnView scene rootNode childNod
  • UIView 周围的虚线边框

    如何在周围添加虚线边框UIView 像这样的东西 如果您喜欢子层 还有另一种方法 在您的自定义视图的 init 中 输入以下内容 border 是 ivar border CAShapeLayer layer border strokeCo
  • 带有图像的 UITableView 滚动非常慢[重复]

    这个问题在这里已经有答案了 可能的重复 带图像的表格视图 加载和滚动缓慢 https stackoverflow com questions 4071497 table view with images slow load and scro
  • 移动设备上的 TensorFlow(Android、iOS、Windows Phone)

    我目前正在寻找不同的深度学习框架 特别是用于训练和部署卷积神经网络 要求是 它可以在带有 GPU 的普通 PC 上进行训练 但训练后的模型必须部署在三个主要的移动操作系统上 即 Android iOS 和 Windows Phone Ten
  • 使用 UIWebView 显示 PDF 不起作用

    因此 我意识到有关使用 UIWebView 在应用程序 在 iPad 上 中显示 PDF 存在很多问题 我已经审查了我能找到的所有内容 但似乎找不到任何满意的东西 我想做的事情非常基本 所以我真的不知道为什么它不起作用 我需要做的就是在 U
  • 旋转 GPUImageTiltShiftFilter - GPUImage

    我想要一个非水平 GPUImageTiltShiftFilter 旋转 我想将其旋转到任意旋转角度 我还希望过滤器速度快 可以通过带有 UIRotationGestureRecongizer 的 UI 进行旋转 我该怎么做呢 啊 想通了 不
  • 如何在 iOS 6 中强制 UIViewController 为纵向

    As the ShouldAutorotateToInterfaceOrientation在 iOS 6 中已弃用 我用它来强制特定视图仅肖像 在 iOS 6 中执行此操作的正确方法是什么 这仅适用于我的应用程序的一个区域 所有其他视图都可
  • 在 Swift 中,如何为具有自动布局的 UIView 制作动画,就像页面滑入一样?

    我尝试创建一个 UIView 来表示一个大小与设备屏幕相同的页面 由于该应用程序支持方向 因此我使用 AutoLayout 来构建它 它工作正常 直到我尝试将页面动画化以从右侧滑入 经过一番研究后 我能想到的最好的办法是 myView UI
  • 如何将NSTextView的格式化内容转换为字符串

    我需要将 NSTextView 的内容从 Mac 应用程序传输到 iOS 应用程序 我使用 XML 作为传输文件格式 所以我需要将 NSTextView 的内容 文本 字体 颜色等 保存为字符串 有什么办法可以做到这一点吗 一种方法是存档
  • 如何在没有 MFMessageComposeViewController 的情况下发送和接收短信?

    我想发送和接收短信而不显示MFMessageViewController从我的申请中 有人能告诉我这怎么可能吗 不可能 除非您使用第 3 方 api 发送 接收短信
  • 构建 iOS 应用程序后退出代码 1 错误

    我正在尝试使用 RestKit 构建我的项目 当我构建它时 我收到以下错误 我尝试使用 Apple LLVM 3 0 和 LLVM GCC 4 2 进行编译 两者都产生相同的结果 任何人有任何想法是什么导致了这个问题 Ld Users Ji

随机推荐

  • 如何安排作业在 Hangfire 中的特定日期运行

    Hangfire io 支持对重复作业进行类似 CRON 的调度 但是我如何指定特定作业应在特定日期 时间运行一次 例如作业应该在 2016 年 6 月 4 日 16 22 运行 并且仅在该特定时间点运行 提出同一问题的类似方法可能是 所描
  • 使用密码对一组文件进行打包 (WinRAR)

    我会尽力让它尽可能短 我正在寻找一个 bat 文件来 rar 和密码文件夹 其中包含文件 但问题比我想象的要棘手一些 每个文件夹中可以包含 1 到 400 个文件 我有两个 txt文件 一个具有所需数量的 rar 文件名 一个具有所需数量的
  • 如何在 Rust 中创建一个具有需要生命周期的特征的通用函数?

    我正在尝试编写一个与数据库一起使用并代表可以存储的内容的特征 为此 该特征继承自其他特征 其中包括serde Deserialize trait trait Storable lt de gt Serialize Deserialize l
  • TableAdapters SQL 注入

    您好 我正在使用一个数据集 在该数据集中我有一个表适配器 在我的表适配器中 我使用存储过程作为查询 如果我使用以下行通过表适配器插入表单数据 是否可以安全地防止 SQL 注入 谢谢 UserDataSetTableAdapters User
  • 初始化控制器和 FXML 链接控制器之间的区别?

    直到最近我还不知道你可以设置控制器fx controller in the FXML文件所以我依赖FXMLLoader s setController来管理链接 那么 是否有任何理由像特定情况一样使用一个而不是另一个overrideable
  • 在Python中计算XMX^T对角线的快速方法

    我需要在没有 for 循环的情况下计算 XMX T 的对角线 或者换句话说 替换以下 for 循环 X nump random randn 10000 100 M numpy random rand 100 100 out numpy ze
  • 如何使用javascript显示jquery页面(在div内)?

    这是我的问题 我调用这个方法 它的作用是 使用 jQuery 在服务器上发布一些数据 我想使用从服务器收到的结果显示页面 我的页面index html div other page content div a class bluebutto
  • LetsEncrypt 根证书过期会破坏 Azure Function Node 应用程序

    我有一个作为 Azure 函数运行的节点应用程序 每 60 秒它会进行多次 Web API 调用 其中一个 Web API 的 SSL 证书由 LetsEncrypt R3 签名 2021 年 9 月 30 日 根证书过期 https le
  • C# 停止BackgroundWorker

    我对后台工作人员有疑问 我在后台工作人员中有无限循环 我怎样才能阻止它 将其更改为非无限循环 The BackgroundWorker具有内置的取消支持 取消后台工作人员调用BackgroundWorker CancelAsync 您还需要
  • opencv:无法解析的外部符号

    我知道这个问题是all over the place 但将库目录添加到项目属性的魔杖对我来说仍然不起作用 我跟着Visual Studio 教程 2013年我这里有 和环境变量设置 for opencv 3 0 测试版 这是相同的代码Tes
  • Jquery 中 .load() 和 .ajax() 函数之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 id load 和 ajax 之间的区别 我在代码中使用 ajax 进行异步调用 在阅读有关 load 的内容时 它看起来好像做了同样的事情 这两种方法之间有什么区别 ajax 是最可配置的 您可以在
  • 布局问题:自动增长标签(SWT)

    我正在使用 GridLayout 尝试使标签自动增长而不隐藏其任何内容 这是一个要测试的简单代码 每次按下按钮时 标签文本都会变大 但只有在水平调整窗口大小后 我才能获得正确的布局 有没有什么方法可以解决这个问题而无需调整窗口大小 我想我已
  • java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication Maven

    我正在尝试创建一个 spring mvc 应用程序 这是我的 pom xml
  • Ruby 内部展平(数组的数组)

    我有一个如下所示的数组 0 a 2 b 3 c 4 d 5 e 6 f 7 g 也就是说 元素数组可以是 1 2 元素数组 或 2 2 元素数组的数组 我试图找到一种优雅的方法来 展平 这个数组 以便 2 的元素扩展到根级元素 在这个例子中
  • 文件未通过 PHP 上传到本地主机

    我无法使用 PHP 将文件上传到本地主机 我创建了简单的 html 表单和 php 脚本 但是我收到这些错误消息 导入 html
  • 如何使用 Boost 解压压缩数据向量?

    我有一个包含 zlib 压缩 压缩 数据的向量 我想用Boost解压它filtering istream 他们的网站上只有一个示例 它对数据流进行操作 而不是我拥有的向量 vector
  • 使用客户端 Java 代码进行 Spring boot 分段文件上传

    我在 Spring Boot 中编写了一个安静的 Web 服务来接收该文件 RequestMapping value upload method RequestMethod POST ResponseBody public void upl
  • 在 Windows 7 64 位中,graphics.h 无法在带有 MinGW 的代码块中工作

    我已经从以下站点设置了在 CodeBlocks 中执行图形代码所需的图形文件 http www codewithc com how to include graphics h in codeblocks 然后我尝试了这个示例代码 inclu
  • 关于 webkit-min-device-pixel-ratio 的问题

    所有浏览器都会理解或者更确切地说应用以下语句的 CSS 规则 media screen and webkit min device pixel ratio 0 CSS Styles 另外 如果上面使用 仅屏幕 而不是屏幕 会有什么区别 me
  • UIImage 更改时动画快照

    我有一个 UIImageView 当按住按钮时它会在屏幕上运行 当按下按钮时 将更改 UIImageView 的 UIImage 当松开按钮时 我将其更改为其原始 UIImage 当图像变回原样时 它会恢复到图像开始的位置 按下按钮时调用此