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 更改时动画快照 的相关文章

  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • 如何在 Swift 中将文件名与文件扩展名分开?

    给定包中文件的名称 我想将该文件加载到我的 Swift 应用程序中 所以我需要使用这个方法 let soundURL NSBundle mainBundle URLForResource fname withExtension ext 无论
  • 无法连接到 iTunes Store(获取应用内购买列表)

    我正在尝试从我的应用程序的应用程序内购买项目商店中获取列表 这是我所做的 安装了新的配置文件并启用了应用内购买 替换配置文件很棘手 但我认为我的设置是正确的 验证税务和银行信息是否正常 该应用程序已在商店出售 创建测试用户 在测试设备上以测
  • 如何找到键盘未覆盖的视图部分(UIModalPresenationStyleFormSheet)?

    我有一个视图控制器 显示带有 UITextView 的视图 并且我想在键盘出现时调整视图的大小 以便 UITextView 不会被键盘覆盖 我几乎在所有情况下都可以正常工作 据我所知 仅当视图控制器以 ModalPresentationSt
  • .showsPhysics 内存泄漏

    我最近花了 5 个小时尝试调试 Spritekit 应用程序中的内存泄漏 应用程序启动后 我注意到内存使用量略有上升 我花了 5 个小时中的 3 个小时挖掘参考资料 了解强与弱的关系ARC https developer apple com
  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • CALayer边框奇怪问题

    我正在向 CALayer 添加边框 但有一些奇怪的行为 在我应用的边框之后出现模糊边框 参见屏幕截图 这是我的代码 void configureLabel self hidden YES self textAlignment NSTextA
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • 从按钮执行 Segue 时应用程序冻结

    我的故事板中有一个按钮 它呈现一个带有模式序列的视图控制器 每次按下此按钮时 应用程序都会冻结 没有崩溃 也没有错误消息 prepareForSegue被调用 所有应该存在的视图控制器都在代码中prepareForSegue 但它们不会出现
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • 贴纸包会在模拟器上使 iMessage 崩溃,但在 iPhone 上不会崩溃

    按照 Apple 的在线说明和视频在 Xcode 中创建了一个贴纸包 所有图像的尺寸均正确且远低于文件大小阈值 如果我在我的实体 iPhone 上构建并运行贴纸包 一切都会完美运行 如果我在模拟器上构建并运行贴纸包 对于任何模拟的 iPho
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • 更改 iOS7 中 UIAlertView 的字体大小

    我想更改alertView中消息文本和标题文本的字体大小 苹果网站上没有任何文档谈到这一点 但苹果在其子类注释中表示 UIAlertView 类旨在按原样使用 请参考以下链接 https developer apple com librar
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 如何安排作业在 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 当图像变回原样时 它会恢复到图像开始的位置 按下按钮时调用此