Quiero hacer algo de dibujo de NSAttributedStrings en cajas de ancho fijo, pero estoy teniendo problemas para calcular la altura correcta que va a tomar cuando dibujado. Hasta ahora, he intentado:Como llegar a la altura NSAttributedString a un ancho fijo
Calling
- (NSSize) size
, pero los resultados son inútiles (para este propósito), ya que va a dar todo lo ancho de los deseos de cuerda.Llamando
- (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options
con una forma recta al ancho que quiero yNSStringDrawingUsesLineFragmentOrigin
en las opciones, exactamente como estoy usando en mi dibujo. Los resultados son ... difíciles de entender; ciertamente no es lo que estoy buscando. (Como se señala en varios lugares, incluido this hilo Cocoa-Dev).Creación de una NSTextView temporal y haciendo:
[[tmpView textStorage] setAttributedString:aString];
[tmpView setHorizontallyResizable:NO];
[tmpView sizeToFit];
Cuando consultará el marco de tmpView, la anchura sigue siendo tan deseada, y la altura es a menudo correcta ... hasta que llego a cadenas más largas, cuando es a menudo la mitad del tamaño que se requiere. (No parece que se alcance un tamaño máximo: un fotograma tendrá 273.0 de alto (alrededor de 300 demasiado corto), el otro será 478.0 (solo 60-ish demasiado corto)).
Agradecería cualquier sugerencia, si alguien más ha logrado esto.
Esta respuesta no está actualizada. [La respuesta de Graham] (http://stackoverflow.com/a/2460091/39155) a continuación es el método correcto a partir de 2014. –