         // MARK: Private.
         private func _initializer() {
             _setupIndicators()
-            _setupFocusTapGesture()
+            _setupInfoStackView()
+            
+            _setupFocusGestures()
             
             _observeProperties()
             _observeNotifications()
+        }
+        
+        private func _setupInfoStackView() {
+            if _infoStackView.superview === self {
+                _infoStackView.removeFromSuperview()
+            }
+            
+            addSubview(_infoStackView)
+            addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-left-[_infoStackView]-right-|", options: [], metrics: ["left": infoContentInsets.left, "right": infoContentInsets.right], views: ["_infoStackView": _infoStackView]))
+            addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-top-[_infoStackView]-(>=bottom)-|", options: [], metrics: ["top" : infoContentInsets.top + _infoStackView.spacing, "bottom" : infoContentInsets.bottom], views: ["_infoStackView": _infoStackView]))
         }
         
         private func _setupIndicators() {

                
                device.isSubjectAreaChangeMonitoringEnabled = true
                
                device.unlockForConfiguration()
            } catch {
                print(error)

// MARK: _CaptureVideoPreviewView.

extension _CameraViewController {
    @available(iOS 9.0, *)
    class _CaptureVideoPreviewView: UIView {
        override class var layerClass: AnyClass { return AVCaptureVideoPreviewLayer.self }
        var previewLayer: AVCaptureVideoPreviewLayer { return layer as! AVCaptureVideoPreviewLayer }
        var videoDevice: AVCaptureDevice? {
            return (previewLayer.session.inputs as! [AVCaptureDeviceInput]).filter{ $0.device.hasMediaType(AVMediaTypeVideo) }.first?.device
        }
        var infoContentInsets: UIEdgeInsets = .zero {
            didSet {
                _setupInfoStackView()
            }
        }
        // Only support String or UIImage object.
        var humanReadingInfos: [Any] = [] {
            didSet {
                _setupHumanReadingInfos()
            }
        }
        let configurationQueue: DispatchQueue = DispatchQueue(label: "com.device_configuration.video_preview.camera_vc")
        
        fileprivate lazy var _infoStackView: UIStackView = { () -> UIStackView in
            let stackView = UIStackView()
            stackView.isUserInteractionEnabled = false
            stackView.translatesAutoresizingMaskIntoConstraints = false
            stackView.alignment = .center
            stackView.axis = .vertical
            stackView.distribution = .equalSpacing
            stackView.spacing = 10.0
            return stackView
        }()
        
        weak var _focusTapGesture: UITapGestureRecognizer!
        weak var _focusLongPressGesture: UILongPressGestureRecognizer!
        
        let _autoFocusIndicator: UIImageView = UIImageView(image: UIImage(named: "TabNavigationImagePickerController.bundle/auto_focus"))
        let _autoExposeIndicator: UIImageView = UIImageView(image: UIImage(named: "TabNavigationImagePickerController.bundle/sun_shape_light"))
