¿Cómo puedo dibujar imágenes con envoltura de texto en iOS?

Quiero dibujar texto como en el siguiente estilo: la imagen siempre está en la esquina superior derecha y el texto está alrededor de la imagen.

enter image description here

¿Alguien podría decirme cómo implementar esto en iOS? ¿Necesito usar Core Text?

¡Gracias por adelantado!

Sí, CoreText es la mejor manera de hacer esto. El código para hacerlo es un poco largo para publicar aquí. Algunos códigos que pueden indicarle la dirección correcta se encuentran en el artículo “Clipping a CGRect to a CGPath”. Si el proceso para hacerlo todavía es confuso, póname y finalmente escribo la publicación del blog que he querido escribir sobre el tema.

Paso 1: crea un objeto heredado de UIView

Paso 2: anular – (nulo) drawRect: (CGRect) método recto

Paso 3: agrega el siguiente código a este método

/* Define some defaults */ float padding = 10.0f; /* Get the graphics context for drawing */ CGContextRef ctx = UIGraphicsGetCurrentContext(); /* Core Text Coordinate System is OSX style */ CGContextSetTextMatrix(ctx, CGAffineTransformIdentity); CGContextTranslateCTM(ctx, 0, self.bounds.size.height); CGContextScaleCTM(ctx, 1.0, -1.0); CGRect textRect = CGRectMake(padding, padding, self.frame.size.width - padding*2, self.frame.size.height - padding*2); /* Create a path to draw in and add our text path */ CGMutablePathRef pathToRenderIn = CGPathCreateMutable(); CGPathAddRect(pathToRenderIn, NULL, textRect); /* Add a image path to clip around, region where you want to place image */ CGRect clipRect = CGRectMake(padding, self.frame.size.height-50, 50, 40); CGPathAddRect(pathToRenderIn, NULL, clipRect); /* Build up an attributed string with the correct font */ NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:self.Text]; //setFont CTFontRef font = CTFontCreateWithName((CFStringRef) [UIFont systemFontOfSize:10].fontName, [UIFont systemFontOfSize:10].lineHeight, NULL); CFAttributedStringSetAttribute(( CFMutableAttributedStringRef) attrString, CFRangeMake(0, attrString.length), kCTFontAttributeName,font); //set text color CGColorRef _white=[UIColor whiteColor].CGColor; CFAttributedStringSetAttribute(( CFMutableAttributedStringRef)(attrString), CFRangeMake(0, attrString.length),kCTForegroundColorAttributeName, _white); /* Get a framesetter to draw the actual text */ CTFramesetterRef fs = CTFramesetterCreateWithAttributedString(( CFAttributedStringRef) attrString); CTFrameRef frame = CTFramesetterCreateFrame(fs, CFRangeMake(0, attrString.length), pathToRenderIn, NULL); /* Draw the text */ CTFrameDraw(frame, ctx); /* Release the stuff we used */ CFRelease(frame); CFRelease(pathToRenderIn); CFRelease(fs); 

Paso 4: usar de la siguiente manera;

 TextLayoutView *TextWrappingImage=[[TextLayoutView alloc] init...your own constructor...]; TextWrappingImage.backgroundColor=[UIColor clearColor]; [cell addSubview:TextWrappingImage]; //Add as subview where you want 

Problema similar Lo resolví creando mi documento de texto con gráficos en HTML usando tags de marcado estándar, agregué el html y el pngs a mi proyecto y lo visualicé usando un UIWebView. 🙂

    Intereting Posts