我有幾個帶有不同文本的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窗口的大小?
Mac OS X上的UI約定是,使警報對話框用於較長的消息,而不是較寬的高。這個功能在NSAlert中應該是自動的;你不應該自己調整任何東西。 – duskwuff 2013-02-11 21:11:50
如果你的字符串真的很長,該怎麼辦? (在這種情況下,你是否會收到一條警告,顯示在你的顯示器上?)如果你的字符串因爲你從英語本地化到一種羅曼語言而延長,會使它延長多達30%? (同樣的問題,再次。)你的問題很有趣,但是這個包是設計到NSAlert中的,因爲它不知道它將要顯示什麼。 – trudyscousin 2013-02-11 21:39:54
沒關係,我明白,但我只是顯示一些文件名(包括pathes)。 – Lupurus 2013-02-11 21:42:11