4

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

4

1 に答える 1

13

NSAlert は、十分な幅のアクセサリ ビューを追加することで広げることができます。

NSAlert *alert = [[[NSAlert alloc] init] autorelease];
alert.accessoryView = [[[NSView alloc] initWithFrame:NSMakeRect(0, 0, 500, 0)] autorelease];
于 2014-10-22T07:13:16.907 に答える