2010-10-12 10 views
5

Estoy utilizando lo siguiente para representar texto en UIView.iPad/iPhone - NSString drawInRect no ajuste de palabra

- (void) drawRect:(CGRect)rect 
{ 

    NSString* text = @"asdf asdf asdf asdf asdf asdf asdf"; 

    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]); 

    CGContextFillRect(context, rect); 

    CGContextSetTextDrawingMode(context, kCGTextFillStrokeClip); 

    CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); 

    CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]); 

    CGContextSetShouldSmoothFonts(context, YES); 

    UIFont* font = [UIFont fontWithName:@"ArialRoundedMTBold" size:20.0f]; 

    CGSize textMaxSize = CGSizeMake(rect.size.width - 20.0f, rect.size.height); 

    CGSize textSize = [text sizeWithFont:font constrainedToSize:textMaxSize lineBreakMode:UILineBreakModeWordWrap]; 

    CGRect textRect = CGRectMake(10.0f, 10.0f, textSize.width, textSize.height); 

    [text drawInRect:textRect withFont:font]; 

    [text drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeWordWrap]; 

    [text drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter]; 
} 

Ninguno de los [text drawInRect] 's ajustar el texto al igual que espero. TextSize se calcula correctamente, pero el sorteo solo representa una sola línea.

Actualización:

Resuelto.

La configuración CGContextSetTextDrawingMode(context, kCGTextFillStrokeClip); hará que el texto se recorte independientemente del modo UILineBreak seleccionado. El ajuste CGContextSetTextDrawingMode(context, kCGTextFillStroke); ha resuelto este problema.

+1

Funcionó muy bien! – user523234

Respuesta

0

solucionado.

Configuraciones CGContextSetTextDrawingMode (context, kCGTextFillStrokeClip); hará que el texto se recorte independientemente del modo UILineBreak seleccionado. Estableciendo CGContextSetTextDrawingMode (context, kCGTextFillStroke); resuelto este problema

Cuestiones relacionadas