Estoy tratando de obtener el siguiente efecto usando un UITextView:
Básicamente quiero insertar una imagen entre el texto. La imagen simplemente puede ocupar 1 fila de espacio, por lo que no es necesario envolver.
Intenté agregar un UIView a la subvista:
UIView *pictureView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[pictureView setBackgroundColor:[UIColor redColor]];
[self.textView addSubview:pictureView];
Pero parece flotar sobre el texto y cubrirlo.
Leí un poco sobre las rutas de exclusión, que parece ser una forma de implementar esto. Sin embargo, no quiero posicionar absolutamente la imagen; en su lugar, debería fluir con el texto (similar a cómo se <span>
comporta en HTML).
Respuestas:
Deberá usar una cadena con atributos y agregar la imagen como instancia de
NSTextAttachment
:fuente
replaceCharactersInRange
Código de @ bilobatum convertido a Swift para aquellos que lo necesitan:
fuente
Puede intentar usar NSAttributedString y NSTextAttachment. Eche un vistazo al siguiente enlace para obtener más detalles sobre cómo personalizar NSTextAttachment para cambiar el tamaño de la imagen. http://ossh.com.au/design-and-technology/software-development/implementing-rich-text-with-images-on-os-x-and-ios/
En mi ejemplo, cambio el tamaño de la imagen para que se ajuste al ancho, en su caso, es posible que desee cambiar el tamaño de la imagen para que coincida con la altura de la línea.
fuente
UIView
aUIImage
y luego agregarlo comoNSTextAttachment
. Para representar la vista en una imagen, consulte esta pregunta: http://stackoverflow.com/questions/4334233/how-to-capture-uiview-to-uiimage-without-loss-of-quality-on-retina- display? lq = 1Ampliando la respuesta de @ bilobatum y usando esta categoría de otra pregunta. Cociné esto:
Uso:
Implementación:
.
fuente
UIFont *fontForRange = [attributesForRange valueForKey:NSFontAttributeName];
aUIFont *fontForRange = [attributesForRange valueForKey:NSFontAttributeName] ?: [UIFont fontWithName:@"HelveticaNeue" size:12.0];
debería ser mejor, porque [attributeForRange valueForKey: NSFontAttributeName] podría ser nulo si no se configuró en el diccionarioLa solución del problema en un ejemplo simple es
fuente