Невозможно автоматически изменить вид плагина аудиоустройства из тестового хост-приложения - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть простая хост-программа, которая создает мой плагин аудиоустройства (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;

, то мое хост-приложение будет иметь причудливое поведение, не изменяя размер главное окно вообще по причинам, которые я не могу понять.

Возможно ли то, что я пытаюсь сделать, или есть какие-то ограничения в представлениях подключаемых модулей аудиоустройств?

...