edittext objective-c ios uitableview nsstring core-text

objective-c - edittext - uitextfield swift 4



¿Cómo puedo dibujar una imagen con Text Wrapping en iOS? (3)

Paso 1: Crea un objeto heredado de UIView

Paso 2: Anulación - (void) drawRect: (CGRect) método rect

Paso 3: Agregue 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: Utilice 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

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

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

¡Gracias por adelantado!


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


Sí, CoreText es la mejor manera de hacer esto. El código para hacerlo es un poco largo para publicar aquí. En el artículo "Clipping a CGRect to CGPath" se encuentra un código que lo puede orientar en la dirección correcta. Si el proceso para hacerlo sigue siendo confuso, envíame un mensaje y finalmente escribo la publicación del blog que he querido escribir sobre el tema.