不使用 MPMoviePlayer 在 iPhone 上制作动画图像(如电影)的方法

2023-12-06

我需要能够在静态图像上显示动画。

鉴于 MPMoviePlayer 无法让您控制任何有用的东西,我认为做到这一点的唯一方法是使用多个静态图像,我们(逐一)显示这些图像以创建“类似电影”的动画。

我知道我们可以使用 UIImageView 来做到这一点(通过设置 UIImageView动画图像属性,然后调用开始动画),但是我们的动画中将包含超过 100 个图像 - 因此内存使用量将达到最大。

有人有制作这种动画的好方法吗?使用核心动画还是 OpenGL?

我的猜测是,我们需要创建一个图像缓冲区,当我们加载新图像时,我们会显示图像缓冲区中的图像?


您可以使用核心动画 CALayer 来托管动画,并在主层中交换一系列 CALayer 来执行逐帧动画。您可以使用其内容属性将图像帧托管 CALayer 的内容设置为 CGImageRef。可以根据需要创建一系列包含图像的 CALayers 并将其存储在 NSMutableArray 中,然后在完成后删除以最大限度地减少内存使用。

您可以通过将replaceSublayer:with:方法调用包装在CATransaction中来设置帧之间的过渡持续时间,如下所示:

[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.25f] // 1/4th of a second per frame
                 forKey:kCATransactionAnimationDuration];   
[mainLayer replaceSublayer:[imageLayers objectAtIndex:oldImageIndex] with:[imageLayers objectAtIndex:newImageIndex]];
[CATransaction commit];

如果您的帧显示时间足够短,您也可以在主图层内容中换入和换出 CGImageRef。

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

不使用 MPMoviePlayer 在 iPhone 上制作动画图像(如电影)的方法 的相关文章

  • 以编程方式在 Swift 中实现尾随和前导约束 (NSLayoutConstraints)

    我正在从 xib 添加一个视图到我的 ViewController 中 然后我将其限制真正适合它 override func viewDidAppear animated Bool super viewDidAppear animated
  • 在核心图形中创建拼贴的多个剪切矩形

    我正在创建一个与其他图像元素相结合的拼贴画 这是一些 ASCII 艺术来解释我正在做的事情 Given images A B and C AAA BBB CCC AAA BBB CCC AAA BBB CCC I take part of
  • 为什么 Xcode 会在钥匙串中自动安装(重复且过期的)证书? [复制]

    这个问题在这里已经有答案了 可能的重复 xCode 4 重新安装我删除的钥匙串证书 https stackoverflow com questions 5264481 xcode 4 reinstalls keychain certs th
  • NSZombieEnabled 完全隐藏 EXC_BAD_ACCESS 错误

    因此 我有一个 UIView 的子类 当我经历一组特定的条件时 在 iPad 而不是 iPhone 或模拟器上运行 仅首次登录 它开始导致 EXC BAD ACCESS 错误 当 UIView 子类从池中自动释放时 即池正在释放 而不是当我
  • IOS 向特定用户推送通知?

    是否可以向特定设备发送 iOS 推送通知 我构建了一个论坛类型的应用程序 用户可以创建问题 其他人可以回答它 我需要向提出问题的特定用户发送 iOS 推送通知 通知他们问题已得到解答 这可以通过 PHP 或其他方法来完成吗 是的 您绝对可以
  • 一部又一部的Android动画

    我在 TextView 上有两个 TranslateAnimations 我希望它们一个接一个地执行 但是 通过使用下面的代码 仅执行第二个代码 我该如何解决这个问题 TranslateAnimation animation new Tra
  • iPhone通讯录:如何获取仅包含电话号码的联系人列表?

    我想获取所有具有电话号码的 ABContacts 的列表 并且仅获取这些联系人 我不想显示任何仅包含电子邮件的联系人 Android 有一个名为 HAS PHNONE NUMBER 的字段 您可以查询该字段 但我没有在 iPhone 上看到
  • Facebook SDK:openActiveSessionWithPermissionscompletionHandler 未调用

    使用我已经实现的 Facebook 代码 BOOL openSessionWithAllowLoginUI BOOL allowLoginUI NSArray permissions NSArray alloc initWithObject
  • 如何组合两个可变数组?

    我有一个 iPhone 应用程序 我试图在其中添加两个可变数组 NSMutableArray dataArray NSMutableArray alloc init NSMutableArray dataArray1 NSMutableAr
  • 动画完成后 CABasicAnimation 重置为初始值

    我正在旋转 CALayer 并尝试在动画完成后将其停止在最终位置 但动画完成后 它会重置到初始位置 xcode 文档明确指出动画不会更新属性的值 任何如何实现这一目标的建议 这就是答案 它是我的答案和克里希南的答案的结合 cabasican
  • 为什么 mp4 视频在 iPad 上可以正常播放,而在 iPhone 上却不行?

    我对这个问题很困惑 我有一个大型 H 264 mp4 视频文件库 需要在 iOS 上播放 最初 我只针对 iPad 但要求发生了变化 现在我需要包括 iPhone 但我注意到 我的 iPod Touch 与我的 iPad 具有完全相同的操作
  • NSTimer 在后台的行为(addTimer:, beginBackgroundTaskWithExpirationHandler:)

    Xcode 6 3 1 ARC 启用 适用于 iOS 8 3 我需要帮助理解我在应用程序进入后台后尝试在应用程序中维护单例共享计时器时遇到的奇怪行为 以前我不关心这个 NSTimer 因为它是使用后台位置服务在后台更新用户位置的 但是 我想
  • NSManagedObject 托管对象之外的子类作为普通对象

    我有一个实体对象 Country 其中包含国家 地区名称和国家 地区代码 它是 NSManagedObject 的子类 我将它与核心数据模型一起使用 将其值存储到持久存储中 我有一个地方 相同的国家 地区对象将用作普通对象 即我将使用它来存
  • Monotouch PInvoke System.EntryPointNotFoundException

    我使用 monotouch 将一些 C 代码嵌入到 iPhone Objective C 应用程序中 我能够调用 C 代码并获取返回值 但无法使用 PInvoke 从 C 代码调用 C 函数 我正在尝试让一个简单的例子起作用 这是一个简单的
  • iPhone SQLite日期问题

    数据库创建得很好 插入工作也很好 我对下面的 select 语句有问题 它不返回任何记录 也没有错误 选择任何其他字段都可以正常工作 谁能发现我做错了什么吗 create table if not exists data pkey inte
  • 定制双手柄滑块

    我想知道是否有人有一些代码 或者知道一个地方有用于创建双手柄滑块的代码 例如 皮划艇应用程序过滤结果时间 有一个两端都有拇指的滑块来创建一个范围 我希望使用双滑块做类似的事情来搜索人员数组上的年龄范围 任何帮助都会很棒 我创建了一个双滑块并
  • 用我自己的视图替换 UIViewController 根视图

    我正在尝试用子类 UIView 替换 UIViewController 根视图 在 iPhone SDK 的 UIViewController 类参考的概述部分中 有这样的说明 您使用 UIViewController 的每个实例来管理全屏
  • NSManagedObjectContext 的performBlockAndWait:不在接收者队列上执行

    我注意到有可能NSManagedObjectContext与NSMainQueueConcurrencyType to performBlockAndWait 并在接收者 主 队列以外的队列上执行该块 例如 以下代码会导致我的parentC
  • 检测图像中的特定对象,即使用 opencv 进行图像分割

    我必须选择 iPhone 上图像中可见的任何特定对象 基本上我的项目是根据我的触摸来分割图像对象 我遵循的方法是首先检测图像的轮廓 然后根据手指触摸选择特定序列 有没有其他方法更强大 因为我必须在视频帧上运行它 我在该项目中使用 OpenC
  • 以编程方式创建图像的缩略图

    在我的应用程序中 我从服务器获取图像 并且能够在图像视图中显示图像 但现在我想将从服务器获取的图像存储在表视图中 并在单击表视图单元格时显示它们 我想要的是如何制作图像的缩略图 以便将其显示在表视图单元格中 如果我直接在表视图单元格中显示图

随机推荐

  • TestNG DataProvider 从 testng.xml 配置文件读取测试数据?

    TestNG DataProvider 是否可以从 testng xml 配置文件中读取测试数据 或者由于某种原因这是不现实的 我希望能够在套件级别和类级别从该文件读取测试数据 那么 给定一个像这样的testing xml 文件 我不确定它
  • Xamarin.Forms:UWP 应用的本地化

    如果我在 UWP 设备上运行我的应用程序 我会在Output window MakePRI 警告 0xdef00522 找到语言 en de 的资源 但未找到默认语言的资源 de DE en US 更改默认语言或使用默认语言限定资源 htt
  • ng-grid 将多个项目插入单元格

    如何将多个值插入到 1 个单元格 例如将电子邮件 电话和地址插入到 1 个单元格 我需要在单元格中减少行数和更多信息 我尝试过这样的方式 angular forEach scope genData function row row getN
  • Axis2 Web 服务客户端生成 - 无需修改客户端的类型

    是否可以使用 Axis2 和 Eclipse 生成 Web 服务客户端并让它使用包中已有的 java 类型 而不是创建它自己的类型 当然 原因是如果我已经创建了类型 A 并且它创建了自己的类型 A 我不能只将类型 A 的变量分配给类型 B
  • __has_cpp_attribute 不是“类似函数”的宏?

    我正在尝试介绍 deprecated 属性到我的代码库中 然而 并不是所有我需要支持的编译器都支持这种语法 标准化之前不同编译器使用的各种方法在属性标准化提案 N2761 因此 我尝试使用此属性有条件地编译 has cpp attribut
  • Python NameError:名称未定义(与默认输入参数类型有关)

    我对我打电话的事实有疑问len myByteArray 在我声明的函数的输入参数中 我希望它成为默认参数 但 Python 似乎不喜欢它 myByteArray属于类型bytearray See 关于 bytearray 的文档在这里 我正
  • 将闭包存储在 HashMap 中

    为了学习 Rust 语言 我使用了一个旧的 C 库并尝试将其转换为 Rust 它使用了很多 C 11 闭包 我在翻译这些概念时遇到了一些困难 在 C 中我有这样的事情 library h struct Event just some dat
  • 使用 vlc 的 Python QT 应用程序不显示全屏

    我正在开发一个应用程序 其中显示多个 vlc 流 rtsp 通过双击其中一个流 该流应该全屏显示 该应用程序是使用 pyqt5 和 vlc qt 的 python 3 7 代码如下 import sys import vlc from Py
  • 从 Visual Studio 2015 中完全删除 ApplicationInsights

    我环顾四周 并没有找到一个好的答案 所以我发布这个问题 希望它可以成为其他希望完全删除 Application Insights 的人的一种 参考 我尝试的第一个显而易见的事情是从 工具和扩展 中卸载该工具 但不幸的是 这让事情变得更糟 现
  • 按价格列对表格进行排序

    这是账单清单 Service Price S1 13 CHF S2 Free S3 Free S4 40 CHF 我想使用 jQuery 或纯 JavaScript 按价格对其进行排序 不是服务器端 I tried jQuery 表排序器
  • 从浏览器中检测 USB 设备是否已插入 Javascript

    是否有基于 Javascript 的机制 我可以通过浏览器检测用户是否插入了特定的 USB 设备 出于安全原因 Web 浏览器中的 JavaScript 仅提供受限制的访问计算机资源 这是不可能将文件存储在任意文件夹中 启动应用程序或与US
  • mod_rewrite php mysql

    我对 mod rewrite 非常陌生 我一直在试图解决这个问题 但真的很困难 p 这是我的问题 我有一个页面http example com user s 81 s 81 正在从数据库中的用户 ID 读取 我想要的是一个链接 http e
  • Request.QueryString 为空时出错

    有时用户会错误地重定向到 Process ViewImages PAGEID 发生这种情况时 他们会收到以下错误 Microsoft VBScript 运行时错误 800a000d 类型不匹配 字符串 FLPM cp images cs a
  • C malloc 只为 int * 分配了 8 个字节 [重复]

    这个问题在这里已经有答案了 我正在尝试创建一个指向6元素int在函数中稍后返回它 因此为此目的我使用malloc 但它的表现似乎并不符合我的预期 这是代码 int j 0 for j lt 5 j int intBig malloc j s
  • C 编译器错误 - 初始值设定项不是常量

    我有一个用于创建新的函数GQueue GQueue newGQueue int n ele int ele size GQueue q GQueue malloc sizeof GQueue if q return NULL q gt pt
  • 直接从指针转换为模板函数?

    我试图获取指向函数模板实例的指针并将其转换为 void include
  • DataGrid 显示图像的路径而不是图像本身

    以下几行最终显示路径而不是它通向的图像 AutoGenerateColums 设置为 true 将其设置为 false 最终会出现完全空的行 System Data DataTable DataTable new System Data D
  • 如何在 React Native 上向 BottomTabNavigator 添加按钮?

    我的目标是同时拥有顶部和底部导航栏Home Dashboard and Album 但不适合SignIn 问题是 我希望将按钮放在底部而不是顶部 最后剩下的难题是如何添加Sign In按钮到底部导航栏 障碍是如果你写
  • 如何在一个窗口上绘制多个 FacetGrid?

    在下面的代码中 我可以通过传递在一个窗口中放置两个简单的seaborn图ax ax i 每个论据都不起作用FacetGrid 类似问题已被问过here 想知道是否有人知道如何做到这一点 谢谢 import pandas as pd impo
  • 不使用 MPMoviePlayer 在 iPhone 上制作动画图像(如电影)的方法

    我需要能够在静态图像上显示动画 鉴于 MPMoviePlayer 无法让您控制任何有用的东西 我认为做到这一点的唯一方法是使用多个静态图像 我们 逐一 显示这些图像以创建 类似电影 的动画 我知道我们可以使用 UIImageView 来做到