2016-02-23 2 views
0

Я расширил UIImagePickerController, но я не уверен, как отобразить мой пользовательский оверлей. Тот, который представлен в раскадровке, кажется, игнорируется, и добавление его как отдельного представления, похоже, тоже не помогает. Мне интересно, делаю ли я это в правой части жизненного цикла или есть ли дополнительный атрибут, который мне нужно установить?Добавление наложения в пользовательский UIImagePickerController?

class VideoRecorderViewController: UIImagePickerController { 
    var overlayView : UIView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.mediaTypes = [kUTTypeMovie as String] 
     self.sourceType = .Camera 
     self.cameraCaptureMode = .Video 

     self.allowsEditing = false 
     self.delegate = delegate 
     self.showsCameraControls = false 
     self.overlayView = (NSBundle.mainBundle().loadNibNamed("RecorderOverlayView", owner: self, options: nil)[0] as! UIView) 

     if (self.overlayView != nil) { 

      self.overlayView?.frame = self.cameraOverlayView!.frame 
      self.cameraOverlayView = self.overlayView;    
     } 
    }  
} 

Другие примеры, которые работают, имеют UIImagePickerController созданный из другого UIView, но я предпочел бы избежать иначе пустой UIView для простого создания UIImagePickerController.

Использование Swift 2

ответ

1

согласно UIImagePickerController Class Reference:

ВАЖНО

Класс UIImagePickerController поддерживает только портретный режим. Этот класс предназначен для использования как есть и не поддерживает подклассы. Иерархия представления для этого класса является частной и не должна быть изменена, за одним исключением. Вы можете назначить произвольное представление объекту камерыOverlayView и использовать это представление для представления дополнительной информации или управления взаимодействием между интерфейсом камеры и вашим кодом.

Вы пытаетесь выполнить подкласс UIImagePickerController. Вы должны создать представление с пользовательским интерфейсом, который вы хотите для захвата видео, а затем установить экземпляр overlayView экземпляра UIImagePickerController. Этот вид может иметь subview, которые являются элементами управления, которые нацелены на представление представления UIImagePickerController.

+0

Спасибо за информацию. Я хочу, чтобы камера автоматически включала вид вида, должен ли я помещать presentViewController() в функцию viewDidAppear(), или есть ли лучшее место для этого? –

+0

В 'viewDidAppear' или' viewWillAppear' Вы можете сказать что-то вроде 'self.presentViewController (imagePickerController, animated: true, completion: ({imagePickerController.startVideoCapture()})' Не уверен, что это сработает, если у вас нет камеры разрешений. В целом считается лучшим UX, позволяющим пользователю начать запись. – beyowulf

Смежные вопросы