使用TextKit在UITextView中animationUIImage
我有一个UIImage
包含多个图像帧和持续时间从一个animation的GIF文件一起切片。 如果我在UIWebView
加载图像,它将按预期animation,但是我想用UITextView
代替。 显然的select是使用TextKit自定义NSLayoutManger
和许多自定义NSAttributedString
属性来实现各种绘图效果。 我有一个单一的UITextView
,我想给NSAttributedString
包含NSTextAttachment
所有的图像,我需要内联显示。 它工作得很好,除了当我加载这些animationUIImages
,他们不通过他们的框架animation。 任何想法如何做到这一点? 我提出了一个理论上的select:
- 为每个animation图像添加一个自定义的属性
- 当布局pipe理器去绘制背景时,迭代这个属性来定位附件的位置。
- callback文本视图以创build带有animation图像的
UIImageView
,添加为子视图,并调用startAnimating
我还没有尝试这个,但它是相当hacky。 我想知道是否有更好的select。
总结:我想通过NSTextAttachment
在UITextView
内animationUIImage
而不需要额外的UIImageView
对象。 你可以忽略这个事实,这是以前用UIWebView
完成的。 UIImage
具有用于设置animation帧的属性( images
, duration
),我现在已经configuration好了。 如果我把它分配给一个UIImageView
animation,如果我把它设置为NSTextAttachment
,没有animation。
我将不胜感激任何反馈。 谢谢!
我认为这种行为是因为UITextView
不显示使用UIImageView
子视图的附件。 当我观察到有和没有NSTextAttachment
添加到UITextView
的视图层次结构时,我没有看到任何新的视图(您可以使用Xcode中的视图debugging观察视图层次结构,或者通过说[[[UIApplication sharedApplication] keyWindow] recursiveDescription]
)。 据推测, UITextView
只是直接绘制附件。
也就是说,我能想到的一个方法就是创build一个animationUIImageView
作为UITextView
的子视图,将其放置在NSLayoutManager
放置NSTextAttachment
,并在UITextView滚动时滚动。 你可以通过调用boundingRectForGlyphRange:inTextContainer:
可能在layoutManager:didCompleteLayoutForTextContainer:atEnd:
NSTextAttachment
从NSLayoutManager
获取NSTextAttachment
的矩形。