2016-11-02 1 views
0

Я делаю приложение, с помощью следующего набора шероховатой до:камеры previewView лаг под иерархией навигации контроллера

enter image description here

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

Мне нужно знать, правильно ли я делаю это. В настоящее время я устанавливаю его таким образом, что при просмотре viewDidDissapear камера перестает захватываться. И когда viewWillAppear, камера возобновляет захват.

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

Edit:

я дальше сузили его вниз и кажется, что отставание вызвано интерактивной поп жест.

ответ

0

Я решил это, используя фоновое нарезание резьбы.

DispatchQueue.global(qos: .background).async { 
    print("This is run on the background queue") 

    DispatchQueue.main.async { 
     print("This is run on the main queue, after the previous code in outer block") 
    } 
} 

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