Уменьшите размер представленного контроллера представления в swift

#ios #swift

Вопрос:

Я пытаюсь использовать репозиторий github voiceOverlay для интеграции речи в текст в своем приложении.

Я инициализирую голосовой контроллер, как показано в документации.

 self.voiceOverlayController.start(on: self, textHandler: { (text, final, extraInfo) in
            ...
 

Представленное представление перехода в настоящее время занимает весь экран. Я хочу предоставить контроллеру фиксированный размер кадра, чтобы некоторые части экрана были доступны, даже если представлен контроллер просмотра. После просмотра файлов pod, вот где они представляют ViewController. :

 inputViewController.modalPresentationStyle = .overCurrentContext
    DispatchQueue.main.async {
      view.present(inputViewController, animated: true)
    }
 

Я понимаю, что .overCurrentContext это контроллер полноэкранного режима, и, следовательно, он представляет его в полноэкранном режиме.

Я не могу определить, есть ли способ изменить размер представленного контроллера в определенном кадре. Любые зацепки будут оценены по достоинству.

Спасибо

ОБНОВЛЕНИЕ: Основываясь на совете Роба в комментариях, я попытался перейти от настоящего к подходу addChild. Но я все еще не мог получить желаемых результатов.

Вот фрагмент того, что я пытаюсь сделать.

Более ранний код :

  inputViewController.modalPresentationStyle = .overCurrentContext
    DispatchQueue.main.async {
      view.present(inputViewController, animated: true)
    }
 

Новый :

где view — родительский UIViewController

 view.addChild(inputViewController)
inputViewController.didMove(toParent: view)
setContraintsForPresenting(view: view)

fileprivate func setContraintsForPresenting(){
    InputViewController.view.translatesAutoresizingMaskIntoConstraints = false
...
}
 

Но когда я пытаюсь это сделать, я получаю сообщение об ошибке Instance member 'view' cannot be used on type 'InputViewController'; did you mean to use a value of this type instead?

Комментарии:

1. Рассмотрите возможность использования контейнера и представления в качестве дочернего контроллера представления. Я не знаком с библиотекой озвучивания, но, надеюсь, вы сможете представить контроллер самостоятельно. Почти уверен, что сдерживание-это то, что вам нужно.

2. Эй, @Роб, я пытался сделать то же самое, но продолжаю попадать в ошибки, я изменил свой вопрос, чтобы определить, что я сделал. Не могли бы вы взглянуть и дать мне знать, что я здесь делаю не так?