Этот код
NSView* superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
NSView* subView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
[superView addSubview:subView];
[superView setAutoresizesSubviews:YES];
[subView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
NSLog(@"subview's frame before resizing: %@", NSStringFromRect([subView frame]));
[superView setFrame:NSMakeRect(0, 0, 200, 100)];
NSLog(@"subview's frame after resizing: %@", NSStringFromRect([subView frame]));
дает ожидаемый результат:
[...] subview's frame before resizing: {{0, 0}, {100, 100}}
[...] subview's frame after resizing: {{0, 0}, {200, 100}}
Ваша проблема в другом месте. Я ожидаю, что одно из ваших представлений контейнера не является частью иерархии представлений окна в момент, когда происходит изменение размера.
Хорошим решением вашей проблемы может быть использование NSTabView без вкладок, потому что тогда все ваши представления всегда находятся в окне (возможно, скрыты), а представление вкладок позаботится об изменении размера.
Другое решение - поместить несколько видов поверх друг друга и использовать setHidden:
, чтобы показать только один.