Estoy intentando cambiar el tamaño de un campo/vista de texto automáticamente dependiendo de su ancho actual. En otras palabras, quiero que el ancho permanezca constante, pero cambie el tamaño de la altura de acuerdo con el texto que se le proporciona.NSString boundingRectWithSize subestimando ligeramente la altura correcta, ¿por qué?
Parece que funciona, pero por alguna razón se está alineando en la parte inferior de mi ventana a pesar de los esfuerzos para moverla hacia atrás manualmente. ¿Alguien puede ver lo que estoy haciendo mal aquí?
NSString *temp = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel felis nec massa ultricies blandit non id arcu. Sed enim est, facilisis a feugiat in, consectetur eget arcu. Aenean rutrum, lacus id euismod congue, nisl erat vulputate lectus, non faucibus tortor purus sed sem. Donec tempor dui egestas velit auctor vitae faucibus diam facilisis. Morbi convallis nulla quis est pulvinar quis ultricies sem sollicitudin.";
myText.stringValue = temp;
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[NSFont systemFontOfSize:12], NSFontAttributeName,
[NSParagraphStyle defaultParagraphStyle], NSParagraphStyleAttributeName,
nil];
NSSize size = NSMakeSize(window.frame.size.width, 200);
myText.frame = [temp boundingRectWithSize:size options:NSLineBreakByWordWrapping | NSStringDrawingUsesLineFragmentOrigin attributes:attributes];
EDIT: Incluso cuando se mueve manualmente el bastidor está claro que el texto aún se está cortada. El tamaño recién ajustado no está del todo allí.
esto es en referencia a: NSString boundingRectWithSize slightly underestimating the correct width - why? y NSTextView or NSTextField automatically resize bounds/frame?
cambiar Quizás altura de 200 a algo mucho más grande para que el marco el tamaño sabe crecer verticalmente – rein
@rein Sigo jugando con eso y, aunque de hecho cambia el tamaño del nuevo fotograma, sigue recortando texto en la parte inferior. El nuevo marco no es lo suficientemente grande. Vea la pregunta actualizada para una nueva captura de pantalla. –