2010-05-25 13 views

Respuesta

19

He hecho algo así en el pasado.

-(void)calcFontSizeToFitRect:(NSRect)r { 
    float targetWidth = r.size.width - xMargin; 
    float targetHeight = r.size.height - yMargin; 

    // the strategy is to start with a small font size and go larger until I'm larger than one of the target sizes 
    int i; 
    for (i=minFontSize; i<maxFontSize; i++) { 
     NSDictionary* attrs = [[NSDictionary alloc] initWithObjectsAndKeys:[NSFont fontWithName:currentFontName size:i], NSFontAttributeName, nil]; 
     NSSize strSize = [string sizeWithAttributes:attrs]; 
     [attrs release]; 
     if (strSize.width > targetWidth || strSize.height > targetHeight) break; 
    } 
    [self setCurrentFontSize:(i-1)]; 
} 

La variable de cadena es el texto que desea dimensionar. Las variables xMargin y yMargin son para el espaciado que desea. Las variables minFontSize y maxFontSize dan límites a qué tan pequeño o grande quieres ir.

+0

wow. ¡Fantástico! ¡¡¡¡¡¡Gracias un montón!!!!!! –

+0

Acabo de encontrar esto y me ayudó mucho, ¡gracias! –

+1

Esto no funciona muy bien para campos de texto de líneas múltiples. –