我有一个UIImage
,其中包含多个图像帧和一个从动画GIF文件中切片的持续时间。如果我在UIWebView
中加载图片,它会按预期动画,但我想改用UITextView
。显而易见的选择是将TextKit与自定义NSLayoutManger
和许多自定义NSAttributedString
属性一起使用,以实现各种绘图效果。我有一个UITextView
,我想为NSAttributedString
提供NSTextAttachment
,其中包含我需要内联显示的所有图片。它工作得很好,除了当我加载其中一个动画UIImages
时,它们不会通过它们的帧动画。有关如何实现这一点的任何想法?我想出了一个理论选择:
UIImageView
,添加为子视图,然后致电startAnimating
我还没有尝试过这个,但它相当hacky。我想知道是否有更好的选择。
总结:我想在UIImage
内通过UITextView
在NSTextAttachment
内制作NSAttributedString
动画,而不需要额外的UIImageView
个对象。您可以忽略以前使用UIWebView
完成的事实。 UIImage
具有用于设置动画帧的属性(images
,duration
),我目前已配置了这些帧。如果我将其分配给UIImageView
动画,如果我将其设置为NSTextAttachment
,则不会动画。
我将不胜感激任何反馈。谢谢!
答案 0 :(得分:2)
我认为此行为是因为UITextView
未使用UIImageView
子视图显示附件。当我在NSTextAttachment
添加和不添加UITextView
时观察视图层次结构时,我看不到任何新视图(您可以使用Xcode中的View Debugging或通过说{来观察视图层次结构) {1}})。据推测,[[[UIApplication sharedApplication] keyWindow] recursiveDescription]
只是直接绘制它的附件。
也就是说,我可以想到包含动画附件的一种方法是创建一个动画UITextView
作为UIImageView
的子视图,将其准确放置在UITextView
个地方的位置NSLayoutManager
,并在UITextView滚动时滚动它。您可以通过调用NSTextAttachment
(可能在NSTextAttachment
中)从NSLayoutManager
获取boundingRectForGlyphRange:inTextContainer:
的矩形。