动画 iMessage 应用程序图形

2023-12-13

我正在创建自己的 iMessage 自定义应用程序,我只想发送一个带有在 2 个图像之间交换背景的 iMessage,从而创建动画的错觉。我什至不确定这是否可能,但我正在尝试使用下面的代码。此代码仅在收件人收到消息时显示第一张图像。任何帮助,将不胜感激。

func createImageForMessage() -> UIImage? {
    let cupAnimation = UIImageView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
    let imagesListArray = [UIImage(named: "boy_cup_1_1.png")!,UIImage(named: "boy_cup_1_7.png")!]

    cupAnimation.animationImages = imagesListArray
    cupAnimation.animationDuration = 10.0
    cupAnimation.animationRepeatCount = 50
    cupAnimation.startAnimating()

    let cupBackground = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
    cupBackground.addSubview(cupAnimation)

    background.addSubview(cupBackground)

    background.frame.origin = CGPoint(x: view.frame.size.width, y: view.frame.size.height)

    view.addSubview(background)

    UIGraphicsBeginImageContextWithOptions(background.frame.size, false, UIScreen.main.scale)
    background.drawHierarchy(in: background.bounds, afterScreenUpdates: true)

    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    background.removeFromSuperview()

    return image
}

iMessage 的丰富消息传递扩展有两种:iMessage 应用程序和贴纸包。

  • 当您有 iMessage 应用程序时,您在应用程序中创建的自定义消息内容(并通过MSMessage or MSSession) 收件人可以查看仅当他们也安装了您的 iMessage 应用程序时。如果他们不这样做,他们会收到您内容的静态预览,以及一些允许收件人从 App Store 安装您的应用程序的 UI。

  • 当您拥有贴纸包时,创建贴纸图像时不需要任何代码 - 它们只是资产。因此,Apple 的 iMessage 服务可以将这些资产传递给任何设备上的任何人,并且任何人都可以查看它们,无论他们的设备上是否安装了您的应用程序。 (而且无论他们是否could安装了您的应用程序。自定义贴纸应用程序只能安装在 iOS 上,但 macOS 和 watchOS 可以接收贴纸。)

因此,要拥有动画贴纸,您只需创建动画资源即可。首选格式是APNG,并且 Xcode 支持从 PNG 图像序列自动创建 APNG 动画贴纸 - 只需在编辑器中查找您的xcstickers捆。或者按照以下教程和视频进行操作为 iMessage 创建贴纸在苹果开发者网站上。

请注意,您也可以将两者结合起来 - 您可以拥有一个 iMessage 应用程序,该应用程序可以动态创建新的贴纸MSSticker类并将它们发送给其他用户。在这种情况下,贴纸是动态的,因为您的应用程序在运行时创建它们,但创建后它们是静态资产,这意味着 iMessage 服务可以分发它们,并且收件人不需要安装您的应用程序即可查看它们。

如果您动态创建贴纸,则需要在应用程序中写入贴纸资源文件,然后再将其传递给MSSticker班级。如果您对动画图像执行此操作,则可以使用以下命令创建 APNG 文件CGImageDestinationAPI — 参见Apple 的图像 I/O 编程指南中的这一点.


以上是试图回答您问题的实际主题——在 iMessage 中发送动画贴纸。但是您的代码中也存在一些更具体的混乱,因此这里尝试解决这个问题......

你的方法返回一个UIImage。该类不支持动画,仅支持静态图像。如果您想对动画做任何事情,您将需要不同的东西来表示动画(如CGImageDestination above).

UIImageView can present动画通过给予sequence of UIImages。但是当你使用drawHierarchy(in:afterScreenUpdates:)您正在对该视图进行屏幕截图,创建一个静态图像。

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

动画 iMessage 应用程序图形 的相关文章

  • Swift3:如何处理优先组现在运算符应该用主体声明?

    以前的 Swift 3 运算符代码是 infix operator associativity left precedence 150 但现在 根据 Xcode 8 beta 6 这会生成以下警告 operator should not b
  • Swift 3 异步调度警告

    我有这个代码 DispatchQueue global priority DispatchQueue GlobalQueuePriority default async let url URL string itemImageURL let
  • 如何执行条件segue

    我通过 IB 创建了一个 segue 单击按钮时 将转换到视图 A 在按钮单击操作中 我有performSegue withIdentifier sender 包裹在一个条件中 我希望仅当条件为真时才发生 segue 但是 一旦用户单击按钮
  • xib(Xcode8) 上 UIView/UIImageView 的大小变为 (1000, 1000)

    我在 xib 上使用自动布局来创建我的 UI 当我完成我的用户界面时 它在模拟器上运行良好 但是当我下次打开 Xcode8 时 xib 显示很奇怪 一些 UIView 和 UIImageView 变大 大小变为 1000 1000 即便如此
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • 在 swift3 中结合平移、alpha 和缩放动画

    我是 iOS Swift 开发的新手 我尝试将三个参数组合在一个动画中 但没有成功 我认为解决方案就在这里 Apple Dev Core 动画编程指南 https developer apple com library content do
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • 如何安装 xCode 命令行工具?如何将 Xcode 9 beta 与 xCode 8 一起安装?

    工具可用吗 我有一个苹果开发者帐户 并且我下载了 Xcode 9 betahttps developer apple com download https developer apple com download Xcode 9 开发者工具
  • 我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?

    在我的项目中 我将所有私有 swift 2 3 文件迁移到 swift 3 我想使用用 swift 2 3 编写的遗留框架 直到它们有 swift 3 版本 我尝试添加 使用旧版 Swift 版本 是 清除 构建我的项目 但我仍然遇到一些麻
  • 带有预填充 .sqlite 的核心数据 (Swift3)

    目前 我正在对现有 iOS9 应用程序进行 Swift3 iOS10 更新 该应用程序存储了欧洲各地约 10 000 个电动汽车充电点 到目前为止 我总是为应用程序提供预填充的数据库 xcappdata 包中的 sqlite sqlite
  • 如何指定输出可执行文件的名称?

    默认情况下 SPM 会构建与包含其模块文件夹同名 大写 的可执行目标 main swift 如何让它使用不同的文件名构建二进制文件 我找不到任何说明SPM手册 https github com apple swift package man
  • Swift:Tableview 在导航栏下方滚动但在状态栏上方滚动?

    我使用以下技巧隐藏了导航栏的阴影 self navigationController navigationBar setBackgroundImage UIImage for default self navigationControlle
  • Swift 无法从上到下呈现视图控制器

    在我的应用程序中 我必须从上到下呈现屏幕 我尝试了下面的代码 它给出了相同的正常呈现风格 let screen self storyboard instantiateViewController withIdentifier Screen1
  • Swift 3/4 dash 转驼峰式 (Snake 转驼峰式)

    我正在尝试执行一个简单的破折号到驼峰案例 在 swift 3 或 4 中 this is my id 将变成 thisIsMyId 无论我做什么 我都找不到足够优雅的方法来做到这一点 以下不起作用 str split separator e
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self
  • XCode8 initWithCoder 框架大小

    发现如果使用XCode 8 XIB文件 UIView initWithCoder将获取frame 0 0 1000 1000 而不是XIB帧大小设置 检查它将添加的 XIB xml 文件的差异
  • Swift 3 Web 视图

    所以我刚刚更新到新的Xcode8 and Swift3但现在我的网络视图不起作用 这是我使用的代码 UIWebView loadRequest webView NSURLRequest URL NSURL string http hardw
  • 两个 UIBezierPaths 交集作为 UIBezierPath

    我有两个UIBezierPaths 一个表示图像部分的多边形 另一个是要在其上绘制的路径 我需要找到它们之间的交集 以便只有该交集区域内的点才会被着色 有没有方法在UIBezierPath可以找到两条路径之间的交点 或新路径 我不知道获取作
  • 在 iOS Swift 中将 NSDate 转换为字符串 [重复]

    这个问题在这里已经有答案了 我正在尝试转换NSDate to a String然后更改格式 但当我经过NSDate to String它正在产生空白 let formatter DateFormatter let myString Stri
  • 如何从 Firebase 获取名称以特定字符串开头的记录?

    如何查询 Firebase 以返回名称以特定字符串开头的子项 我正在尝试将 Firebase 与此一起使用自动完成文本字段项目 https github com mnbayan AutocompleteTextfieldSwift 他们使用

随机推荐

  • M 以下 Android 版本的 Android 运行时权限?

    最近我的ola 出租车应用程序 最新更新后 运行时请求位置权限 它没有打开位置设置屏幕 但只需单击 是 设备的我的位置 GPS 就会打开 并且应用程序会继续进行 而无需进入位置设置或任何设置屏幕 此功能即将在 Android M 中推出 并
  • 将数据帧列表中的变量聚合到单个数据帧中

    我正在 R 中执行每个保单的人寿保险估值 每月现金流量预测是按每个保单执行的 并返回以下格式的数据框 例如 Policy1 data frame ProjM 1 200 Cashflow1 rep 5 200 Cashflow2 rep 1
  • 如何在 Selenium 中测试“记住我”复选框功能

    我正在尝试测试登录表单的 记住我 功能 我可以输入用户名和密码 单击复选框 单击提交 然后quit or close 浏览器 但是当我重新打开浏览器时new ChromeDriver 或任何其他WebDriver实现 测试站点不记得任何东西
  • 是否可以强制存在量化类型变量仅具有单一类型?

    考虑下面的代码 trait Foo T def one Foo gt T def two T def three x T def test T f Foo T val b f one b three b two 方法测试无法进行类型检查 它
  • Excel:从工作表调用 vba 函数时将当前单元格作为参数传递

    我正在尝试创建一个 VBA 函数 该函数接受一个单元格作为参数 并使用各种 Range Offset 从那里开始工作 该函数将在工作表单元格中调用 为了进行测试 我使用这个简单的脚本 Public Function testPublic t
  • 使用 chrome 和 safari 查看时,html 页面中的“tt”、“ti”、“ff”等字符消失

    在特定的 html 文件中 查看时所有 ti fi tt 字符都丢失 当我们在inspect element 例如 解决方案 拼写错误为 解决方案 示例截图 相同的 html 在 FireFox 上运行良好 上述问题在 Chrome 和 S
  • Ajax.BeginForm 不调用 onSuccess

    在 ASP NET MVC 3 应用程序中 我使用 Ajax BeginForm 将书面文本发布到控制器 using Ajax BeginForm Post Forum new threadId Model Thread Id new Aj
  • 在 Fabric.js 中使用 setAngle() 后,旋转和缩放控件关闭

    我想让用户旋转对象Fabric js动力画布 但将其旋转限制为 90 度增量 想法是 当它们旋转然后停止时 物体会以最接近的角度 卡入 到位 通过监听 object rotating 设置最近的角度 然后调用 object setAngle
  • 为什么我的 Breeze.js 实体没有创建 ko.observables?

    我使用的 Breeze js 没有服务器端组件 并使用以下代码在客户端创建实体 根据沃德的要求 我简化了一切 并添加了更多信息 我的 MetaDataStore 配置功能 function configureMetadataStore me
  • F2PY找不到模块

    我在 Python 中使用 f2py 编译模块时遇到困难 我有一个用 Fortran 编写的软件 可以在 Linux 64 位机器上编译良好 此外 F2Py 还编译了一个使用 Fortran 位的 Python 模块 Python 模块的编
  • 如何使用 C++ 检查进程是否正在运行

    如果一个进程没有运行 我不应该显示某些上下文菜单选项 我正在使用进程名称检查进程是否正在运行 但问题是 进程名称在不同的 Windows 平台上显示方式不同 即 Windows 任务栏上的 Windows 64 位进程名称是 应用程序名 e
  • 解密 TripleDES“坏数据”

    我是加密 解密新手 我正在尝试解密已加密且长度为 44 个字符的输入字符串 这是我到目前为止所拥有的 但当它尝试执行 TransformFinalBlock 函数时 我不断收到 坏数据 public static String Decryp
  • 如何将 getElementById 切换为 getElementsByClassName [重复]

    这个问题在这里已经有答案了 我试图将 getElementById 切换为 getElementsByClassName 对于这样的项目 http jsfiddle net 2waZ2 21 我的简单努力不起作用 http jsfiddle
  • 删除 Chrome 的“翻译”DOM 属性

    我正在处理一些遗留代码 其中原始开发人员大量使用生成具有名为的非标准属性的 HTML DOM 节点translate span My Account span 然后使用 JavaScript 代码遍历 搜索这些节点 如下所示 if tar
  • 为什么“值”之和不等于 scikit-learn RandomForestClassifier 中“样本”的数量?

    我通过 RandomForestClassifier 构建了一个随机森林并绘制了决策树 参数 值 红色箭头所指 是什么意思 为什么 中两个数字的总和不等于 样本 的数量 我看到了一些其他的例子 中的两个数字之和等于 样本 的数量 为什么我的
  • VBScript 的正则表达式负向后查找替代方案

    由于 VBScript 不支持lookbehinds 我正在寻找替代解决方案 我有字符串 E F 我想用 替换 F 但前提是它前面没有 E 替换后 我希望 E F 为 E F 如果字符串是 randomText F 我希望它在替换后看起来像
  • Android 通讯录 - 更新说明

    我正在使用新的 API 来插入 更新手机上的联系人 并且我正在使用此方法来更新它们 String selectArgs1 Data CONTACT ID AND Data MIMETYPE Note CONTENT ITEM TYPE AN
  • 为什么 file.write 返回一个 int ?

    Why is MT2这里有一个 int 当我运行代码时 Python 给出了一个错误 如果都是数字的话 不应该只是一个 int 吗 MT1 open mean temp txt a Write a new line for Rio de J
  • 禁用 Safari 自动填充用户名和密码

    您可能已经知道 Safari 有一个令人讨厌的自动填充错误 无论您是否设置 它都会填充电子邮件 用户名和密码字段autocomplete off or not 这是一个基本形式
  • 动画 iMessage 应用程序图形

    我正在创建自己的 iMessage 自定义应用程序 我只想发送一个带有在 2 个图像之间交换背景的 iMessage 从而创建动画的错觉 我什至不确定这是否可能 但我正在尝试使用下面的代码 此代码仅在收件人收到消息时显示第一张图像 任何帮助