Я ' m создание класса, который отображает окно с некоторым текстом, флажком «Больше не показывать» и кнопкой. Чтобы его можно было использовать повторно, класс изменяет размер окна по мере необходимости, чтобы соответствовать тексту.
Однако есть небольшая неточность в расчетах - если я не добавляю 5 пикселей к ширине, некоторые строки обрезаются. (Последнее слово просто удаляется.)
Вот что у меня есть:
// NSTextField *textLabel;
// NSString *text;
NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject: [textLabel font] forKey: NSFontAttributeName];
NSRect textFrame = [text boundingRectWithSize:NSMakeSize(textLabel.frame.size.width, (unsigned int)-1)
options:(NSStringDrawingDisableScreenFontSubstitution | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:stringAttributes];
textFrame.size.width += 5;
Я временно установил желтый цвет фона метки, чтобы упростить отладку, и он явно расширяется до почти соответствует последнему слово. Для этой тестовой строки достаточно 4 пикселей.
есть небольшая неточность в расчетах - если я не добавляю 5 пикселей к ширине, некоторые строки обрезаются. (Последнее слово просто удаляется.)
Вот что у меня есть:
// NSTextField *textLabel;
// NSString *text;
NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject: [textLabel font] forKey: NSFontAttributeName];
NSRect textFrame = [text boundingRectWithSize:NSMakeSize(textLabel.frame.size.width, (unsigned int)-1)
options:(NSStringDrawingDisableScreenFontSubstitution | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:stringAttributes];
textFrame.size.width += 5;
Я временно установил желтый цвет фона метки, чтобы упростить отладку, и он явно расширяется до почти соответствует последнему слово. Для этой тестовой строки достаточно 4 пикселей.
есть небольшая неточность в расчетах - если я не добавляю 5 пикселей к ширине, некоторые строки обрезаются. (Последнее слово просто удаляется.)
Вот что у меня есть:
// NSTextField *textLabel;
// NSString *text;
NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject: [textLabel font] forKey: NSFontAttributeName];
NSRect textFrame = [text boundingRectWithSize:NSMakeSize(textLabel.frame.size.width, (unsigned int)-1)
options:(NSStringDrawingDisableScreenFontSubstitution | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:stringAttributes];
textFrame.size.width += 5;
Я временно установил желтый цвет фона метки, чтобы упростить отладку, и он явно расширяется до почти соответствует последнему слово. Для этой тестовой строки достаточно 4 пикселей.
Обратите внимание, что не все строки выходят из строя без этих добавленных пикселей.
Меня волнуют две причины:
1) Я хочу узнать, почему это немного не так, и что более важно
2) Я полагаю, что при изменении ширины после расчета обертка теоретически может измениться и оставить последнюю строку неиспользованной, создавая дополнительное пустое пространство под текстом.