我有一个UIImage,它包含多个图像帧和一个从动画GIF文件中分割到一起的持续时间。如果我将图像加载到UIWebView中,它将像预期的那样显示动画,但我想使用UITextView代替。显而易见的选择是将TextKit与自定义NSLayoutManger和许多自定义NSAttributedString属性一起使用,以实现各种绘图效果。我有一个UITextView,我想给出一个NSAttributedString,其中包含所有需要内联显示的图像的NSTextAttachment。它运行良好,除非当我加载这些动画UIImages之一,他们不通过他们的帧动画。对如何做到这一点有什么想法吗?我想出了一个理论上的选择:
UIImageView,添加为子视图,并调用startAnimating我还没试过这个,但还挺烦人的。我想知道是否有更好的选择。
总之:我想通过UIImage在NSAttributedString中通过NSTextAttachment动画一个UIImageView,而不需要额外的UIImageView对象。您可以忽略这样一个事实,即这以前是用UIWebView完成的。UIImage具有设置动画帧的属性(images,duration),我目前已经配置了这些属性。如果我将它分配给一个UIImageView,它会有动画,如果我将它设置为NSTextAttachment,则没有动画。
如有任何反馈,我将不胜感激。谢谢!
发布于 2015-05-07 09:40:45
我认为这种行为是因为UITextView没有使用UIImageView子视图显示附件。当我观察视图层次结构时,无论是否将NSTextAttachment添加到UITextView中,我都看不到任何新的视图(您可以使用Xcode中的视图调试或通过表示[[[UIApplication sharedApplication] keyWindow] recursiveDescription]来观察视图层次结构)。想必,UITextView只是直接绘制它的附件。
尽管如此,我认为包含一个可动画附件的一种方法是自己创建一个动画UIImageView作为UITextView的一个子视图,将它准确地放置在NSLayoutManager放置NSTextAttachment的位置,并在UITextView滚动时滚动它。您可以通过调用NSTextAttachment (可能在layoutManager:didCompleteLayoutForTextContainer:atEnd:中)从NSLayoutManager中获取boundingRectForGlyphRange:inTextContainer:的矩形。
https://stackoverflow.com/questions/29949348
复制相似问题