【发布时间】:2015-07-09 01:41:23
【问题描述】:
我有一个UIImage,其中包含多个图像帧和一个从动画 GIF 文件中分割出来的持续时间。如果我将图像加载到 UIWebView 中,它将按预期进行动画处理,但我想改用 UITextView。显而易见的选择是使用带有自定义NSLayoutManger 和许多自定义NSAttributedString 属性的TextKit 来实现各种绘图效果。我有一个UITextView,我想提供一个NSAttributedString,其中包含我需要内联显示的所有图像的NSTextAttachments。它工作正常,除了当我加载其中一个动画UIImages 时,它们不会通过它们的帧进行动画处理。关于如何做到这一点的任何想法?我想出了一个理论上的选择:
- 为每个动画图像添加自定义属性
- 当布局管理器去绘制背景时,迭代这个属性来定位附件的位置。
- 回调文本视图以使用动画图像创建
UIImageViews,添加为子视图,并调用startAnimating
我还没有尝试过,但它相当 hacky。我想知道是否有更好的选择。
总而言之:我想通过NSTextAttachment 在NSAttributedString 内为UITextView 内的UIImage 设置动画,而无需额外的UIImageView 对象。您可以忽略以前使用UIWebView 完成此操作的事实。 UIImage 具有用于设置动画帧的属性(images,duration),我目前已经配置了这些属性。如果我将其分配给UIImageView,它会产生动画效果,如果我将其设置为NSTextAttachment,则不会产生动画效果。
如有任何反馈,我将不胜感激。谢谢!
【问题讨论】:
-
今天早上想知道同样的事情。
-
您能否提供一个屏幕截图,说明您尝试使用 UIImage 和 UITextView 复制它在 WebView 中的外观。这将有助于更好地对其进行可视化并提供答案。
-
@pteofil 我无法截屏,因为您不会知道图像是动画,它看起来就像一张静态图像。澄清一下:我想通过 NSAttributedString 中的 NSTextAttachment 为 UITextView 中的 UIImage 设置动画,而无需额外的 UIImageView 对象。您可以忽略以前使用 UIWebView 完成此操作的事实。 UIImage 具有用于设置动画帧的属性(图像、持续时间),我目前已经配置了这些属性。如果我将它分配给它动画的 UIImageView,如果我将它设置为 NSTextAttachment,则没有动画。
-
我现在明白多了。但是您澄清的评论会更好地融入每个人都可以轻松看到的问题中。
-
如果您持有对
NSTextAttachment对象的引用并在延迟后手动更改image属性,您是否看到任何变化?如果是这样,您可以继承NSTextAttachment并重新创建动画行为。
标签: ios uitextview textkit nslayoutmanager