У меня есть несколько диалогов NSAlert с другим текстом. Я хочу настроить ширину окна предупреждения для текста, чтобы текст не обертывался. Поэтому я использую этот код, чтобы вычислить ширину строки:Окно изменения NSAlert
NSSize size = [myString sizeWithAttributes:@{NSFontAttributeName: [NSFont systemFontOfSize:[NSFont systemFontSize]]}];
Тогда я пытаюсь настроить окно предупреждения:
NSAlert *alert = [NSAlert alertWithMessageText:...
...
NSPanel *panel = alert.window;
NSRect frame = panel.frame;
float x = ((NSTextField*)[[((NSPanel*)(alert.window)).contentView subviews] objectAtIndex:5]).frame.origin.x; //the x-position of the NSTextField
frame.size.width = size.width + x;
[alert.window setFrame:frame display:YES];
Этот код работает, но только в первый раз, я вызовите метод с помощью этого кода. Если я возьму другую строку и снова вызову метод, окно не будет изменяться (хотя рассчитанная ширина будет различаться).
Любые идеи, как я могу изменить размер окна NSAlert?
соглашение UI на Mac OS X должны сделать оповещение Диалогов выше для более длинных сообщений, не шире. Эта функция должна быть автоматической в NSAlert; вам не придется ничего настраивать самостоятельно. – duskwuff
Что делать, если ваша строка очень длинная? (В этом случае у вас будет предупреждение, которое растягивается на вашем дисплее?) Что делать, если ваша строка удлиняется, потому что вы локализованы, скажем, на английский, на романский язык, что сделает его дольше на 30%? (Такая же проблема, опять.) Ваш вопрос интригует, но обертка разработана в NSAlert, потому что, ну, она не знает, что она собирается отображать. – trudyscousin
Это нормально, и я это понимаю, но я просто показываю некоторые имена файлов (включая шаблоны). – Lupurus