ios - UIImage animado en UITextView con TextKit
nslayoutmanager (1)
Creo que este comportamiento se debe a que UITextView
no muestra los archivos adjuntos utilizando UIImageView
UIImageView. Cuando observo la jerarquía de vistas con y sin el NSTextAttachment
s agregado a la UITextView
, no veo ninguna nueva vista (puede observar la jerarquía de vistas usando Ver depuración en Xcode o diciendo [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
). Presumiblemente, el UITextView
simplemente dibuja sus archivos adjuntos directamente.
Dicho esto, una forma en la que puedo pensar en incluir un archivo adjunto animable es crear una UIImageView
animada como una subvista del UITextView
, colocarlo exactamente donde el NSLayoutManager
coloca el NSTextAttachment
y desplazarlo cada vez que el UITextView se desplaza. Puede obtener el rectángulo de NSTextAttachment
desde NSLayoutManager
llamando a boundingRectForGlyphRange:inTextContainer:
(posiblemente en layoutManager:didCompleteLayoutForTextContainer:atEnd:
.
Tengo un UIImage
que contiene varios marcos de imagen y una duración que se cortó a partir de un archivo GIF animado. Si cargo la imagen en un UIWebView
, se animará como se espera, pero quiero usar un UITextView
en UITextView
lugar. La opción obvia es usar TextKit con un NSLayoutManger
personalizado y muchos atributos NSAttributedString
personalizados para lograr varios efectos de dibujo. Tengo un solo UITextView
que me gustaría dar a un NSAttributedString
que contiene NSTextAttachment
s para todas las imágenes que necesito para mostrar en línea. Funciona bien, excepto cuando carga uno de estos UIImages
animados, no se animan a través de sus cuadros. ¿Alguna idea sobre cómo lograr esto? Se me ha ocurrido una opción teórica:
- Para cada imagen animada agregue un atributo personalizado definido
- Cuando el administrador de diseño va a dibujar fondos, repita este atributo para ubicar las posiciones del adjunto.
- Devuelva la llamada a la vista de texto para crear
UIImageView
s con la imagen animada, agregue como una subvista y llame astartAnimating
Todavía tengo que intentar esto, pero es bastante hacky. Me pregunto si hay una mejor opción.
En resumen: quiero animar un UIImage
dentro de un UITextView
través de NSTextAttachment
dentro de un NSAttributedString
sin la necesidad de objetos adicionales de UIImageView
. Puede ignorar el hecho de que esto se hizo anteriormente con un UIWebView
. UIImage
tiene propiedades ( images
, duration
) para configurar marcos animados, que actualmente tengo configurados. Si lo asigno a un UIImageView
se anima, si lo configuro como un NSTextAttachment
, no hay animación.
Le agradecería cualquier comentario. ¡Gracias!