Как добавить виды в окно, чтобы их размеры были изменены в соответствии с рамкой окна?
Проблема
Я делаю листовое окно, содержащее 2 вида, где одновременно виден только один из них,
поэтому важно, чтобы размеры имели тот же размер, что и у окна. Моя проблема в том, что либо
view0 подходит правильно, а view1 нет или наоборот. Я не могу понять, как
присвойте им тот же размер, что и у окна.
Возможное решение
Я мог бы просто убедиться, что оба представления имеют одинаковый размер в Интерфейсном Разработчике, тогда это будет работать. Однако я ищу способ сделать это программно.
Снимок экрана view0
Ниже вы можете увидеть проблему авторазмера в верхней и правой части, где вид как-то обрезан.
Снимок экрана view1
Размер этого вида изменен правильно.
Вот мой код
Можно ли изменить размеры видов перед их добавлением в окно. Или лучше сделать, как я делаю сейчас, когда представления добавляются один за другим при изменении рамки окна. Как ты это делаешь?
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];