我有一个包含多个图像帧和持续时间的UIImage,它是从一个动画GIF文件中拼接而成的。如果我在UIWebView中加载图像,它会按预期进行动画,但我想使用UITextView。显然的选择是使用TextKit与自定义NSLayoutManger和许多自定义NSAttributedString属性来实现各种绘制效果。我有一个单独的UITextView,我想为它提供一个NSAttributedString,其中包含需要内联显示的所有图像的NSTextAttachment。除了当我加载这些动画UIImages之一时,它们不会通过它们的帧进行动画外,一切都很好。你有关于如何完成这个任务的想法吗?我已经想出了一个理论上的选项:
总之:我想通过NSAttributedString中的NSTextAttachment在UITextView中动画显示UIImage,而不需要额外的UIImageView对象。您可以忽略先前使用UIWebView的事实。UIImage具有设置动画帧的属性(images,duration),我已经配置好了。如果我将其分配给UIImageView,则会进行动画,如果将其设置为NSTextAttachment,则不会进行动画。
感谢您的任何反馈。谢谢!
- 为每个动画图像添加自定义定义的属性
- 当布局管理器开始绘制背景时,迭代该属性以查找附件的位置。
- 回调TextView以创建UIImageViews并用动画图像添加为子视图,并调用startAnimating
总之:我想通过NSAttributedString中的NSTextAttachment在UITextView中动画显示UIImage,而不需要额外的UIImageView对象。您可以忽略先前使用UIWebView的事实。UIImage具有设置动画帧的属性(images,duration),我已经配置好了。如果我将其分配给UIImageView,则会进行动画,如果将其设置为NSTextAttachment,则不会进行动画。
感谢您的任何反馈。谢谢!
NSTextAttachment
对象的引用,并在延迟后手动更改image
属性,那么你会看到任何变化吗?如果是这样,你可以子类化NSTextAttachment
并重新创建动画行为。 - RobertNSTextAttachment
子类和CADisplayLink
,分析动画的UIImage
并确定何时需要更新文本附件的图像属性。这似乎比将UIImageView
子视图添加到文本视图中稍微不那么hacky。不过我会尝试一下,看看可行性如何。 - afrederick