Как добавить представления в окно, чтобы размер представлений соответствовал рамке окна?
Проблема
Я делаю окно листа, содержащее 2 представления, при этом одновременно видно только одно из них, поэтому важно, чтобы представления имели тот же размер, что и окно. Моя проблема в том, что либо view0 подходит правильно, а view1 - нет, либо наоборот. Не могу понять, как сделать им такой же размер, как окно.
Возможное решение
Я мог просто убедиться, что оба представления имеют одинаковый размер в Интерфейсном Разработчике, тогда это сработает. Однако я ищу способ сделать это программно.
Скриншот view0
Ниже вы можете увидеть проблему автоматического изменения размера вверху и справа, где вид каким-то образом обрезан.
(источник: flickr.com)
Скриншот view1
Размер этого представления изменен правильно.
(источник: flickr.com)
Вот мой код
Можно ли изменить размер представлений перед добавлением их в окно. Или лучше поступить так, как сейчас, когда представления добавляются одно за другим при изменении рамки окна. Как ты это делаешь?
NSView* view0 = /* a view made with IB */;
NSView* view1 = /* another view made with IB */;
NSWindow* window = [self window];
NSRect window_frame = [window frame];
NSView* cv = [[[NSView alloc] initWithFrame:window_frame] autorelease];
[window setContentView:cv];
[cv setAutoresizesSubviews:YES];
// add subview so it fits within the contentview frame
{
NSView* v = view0;
[v setHidden:YES];
[v setAutoresizesSubviews:NO];
[cv addSubview:v];
[v setFrameOrigin:NSZeroPoint];
[window setFrame:[v frame] display:NO];
[v setAutoresizesSubviews:YES];
}
// add subview so it fits within the contentview frame
{
NSView* v = view1;
[v setHidden:YES];
[v setAutoresizesSubviews:NO];
[cv addSubview:v];
[v setFrameOrigin:NSZeroPoint];
[window setFrame:[v frame] display:NO];
[v setAutoresizesSubviews:YES];
}
// restore original window frame
[window setFrame:window_frame display:YES];
[view0 setHidden:NO];
[view1 setHidden:YES];