У меня есть простая хост-программа, которая создает мой плагин аудиоустройства (v3) для его проверки. Я хочу протестировать поведение автоматического изменения размера, но не могу заставить контроллер представления плагина автоматически изменять размер.
Вот что я получил в программе хоста:
// ...
[[unit AUAudioUnit] requestViewControllerWithCompletionHandler:^(AUViewControllerBase * _Nullable viewController) {
if (viewController != nil) {
[self addPluginView:(NSViewController *)viewController];
} else {
NSLog(@"nil viewController");
}
}];
}
- (void)addPluginView:(NSViewController *)viewController {
viewController.view.frame = _extensionView.bounds;
[_extensionView addSubview:viewController.view];
}
AutoresizingMask представления расширения устанавливается так, чтобы разрешить внутреннее изменение размеров как по X, так и по Y (NSViewHeightSizeable | NSViewWidthSizeable), однако возвращаемый контроллер представления из плагина requestViewController отсутствует, несмотря на то, что процесс плагина создает свой контроллер представления с установленными этими битами.
Итак, Как и ожидалось, при изменении размера окна приложения вид плагина будет правильно привязан к 0,0 внутри вида расширения в фиксированном размере, а размер вида расширения изменяется. Разумеется, я хочу, чтобы представление плагина изменяло его размеры.
Если я попробую это:
viewController.view.autoresizingMask = NSViewHeightSizable | NSViewWidthSizable;
viewController.view.autoresizesSubviews = YES;
, то мое хост-приложение будет иметь причудливое поведение, не изменяя размер главное окно вообще по причинам, которые я не могу понять.
Возможно ли то, что я пытаюсь сделать, или есть какие-то ограничения в представлениях подключаемых модулей аудиоустройств?