ios - puedo - cómo adjuntar un archivo desde mi iphone
¿Cómo envolver el texto alrededor de los archivos adjuntos utilizando el kit de texto iOS7? (3)
Estoy usando la nueva API del kit de texto para agregar archivos adjuntos a un texto atribuido:
// create an attachment for each image
NSTextAttachment* ta = [NSTextAttachment new];
ta.image = [UIImage imageNamed:@"imageName"];
// add to the attributed text string
NSAttributedString* rep = [NSAttributedString attributedStringWithAttachment:ta];
[myAttributedTextString appendAttributedString:rep];
Esto funciona bien, puedo ver mi imagen renderizada en la salida. Sin embargo, no puedo encontrar ninguna forma de especificar la alineación de la imagen, o envolver el texto alrededor de la imagen.
¿Algunas ideas?
NOTA: Los adjuntos de texto son diferentes de las rutas de exclusión: un adjunto de texto es parte del "modelo", es decir, es parte de la cadena de texto atribuida en la que el administrador de diseño realiza el diseño del texto. Mientras que un camino de exclusión es parte de la vista.
Intenta establecer la propiedad de bounds
al tamaño de la imagen.
Define los límites de diseño de la representación gráfica del receptor en el sistema de coordenadas del texto.
Entonces debería ser:
ta.bounds = (CGRect) { 0, 0, ta.image.size };
NSTextAttachments
se trata como un solo carácter por NSAttributedString
. Por lo tanto, para ajustar su alineación, debe hacerlo como lo haría para el texto. Me tomó horas de juguetear con los attachment.bounds
(Que nunca pude trabajar correctamente) para finalmente resolver esto. Aquí hay un ejemplo de cómo alinear horizontalmente un NSTextAttachment
.
#def BETWEEN_SECTION_SPACING 10
// creates a text attachment with an image
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = [UIImage imageNamed:@"sample_image.jpg"];
NSMutableAttributedString *imageAttrString = [[NSAttributedString attributedStringWithAttachment:attachment] mutableCopy];
// sets the paragraph styling of the text attachment
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init] ;
[paragraphStyle setAlignment:NSTextAlignmentCenter]; // centers image horizontally
[paragraphStyle setParagraphSpacing:BETWEEN_SECTION_SPACING]; // adds some padding between the image and the following section
[imageAttrString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [imageAttrString length])];
Después de esto, debería agregar imageAttrString
a una cadena con atributos existente y tal vez agregar otra después de ella. Una peculiaridad es que debido a que el adjunto es un carácter, no se trata como su propio párrafo. Para que ese sea el caso, deberá rodearlo con /n
(caracteres de nueva línea). Solo agrégalos a ambos lados de la cadena atribuida del archivo adjunto.
Espero que eso ayude, me tomó mucho tiempo descubrirlo.
ta.bounds = (CGRect) { 0, yPadding, ta.image.size };
Cambia el yadding que necesites.
Puede ser negativo cuando la altura de la imagen es mayor que la altura de la línea.