テキストの異なる複数の 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 ウィンドウのサイズを変更するにはどうすればよいですか?