Как заставить фото UIImageView исчезнуть через временной интервал в Swift - PullRequest
1 голос
/ 20 июня 2020

Я работаю над приложением камеры для сегментации, и мне удалось сделать снимок в реальном времени для отображения в UIImageView в виде эскиза. Теперь я хочу, чтобы он исчез в течение 3 секунд, если пользователь не трогает (например, поведение камеры IOS при съемке изображения). Не могли бы вы помочь мне, как достичь? См. Соответствующую часть моего кода ниже. Заранее большое спасибо.

// MARK: -- Action to Capture Photo

extension ViewController {
    
    @IBAction func photoButtonAction(sender: UIButton) {
        CameraManager.shared.capture { [weak self] (pixelBuffer, sampleBuffer) in
            self?.handleCameraOutput(pixelBuffer: pixelBuffer, sampleBuffer: sampleBuffer, onFinish: { (image) in
                self?.imagePreview.image = image
                
                let pngData = image!.pngData()
                let compressedData = UIImage(data: pngData!)
                self!.writeToPhotoAlbum(image: compressedData!)

            })
        }
                
    }
        
        func writeToPhotoAlbum(image: UIImage) {
            UIImageWriteToSavedPhotosAlbum(image, self, #selector(saveError), nil)
    
        }

        @objc func saveError(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
            
        }
        
    }

1 Ответ

2 голосов
/ 20 июня 2020

Вы можете использовать DispatchQueue.main.asyncAfter(deadline:) такой метод:

var noUserInteractionOnImage = true // toggle this if user interacts with image

@IBAction func photoButtonAction(sender: UIButton) {
    CameraManager.shared.capture { [weak self] (pixelBuffer, sampleBuffer) in
        self?.handleCameraOutput(pixelBuffer: pixelBuffer, sampleBuffer: sampleBuffer, onFinish: { (image) in
            //...
            DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
                if self?.noUserInteractionOnImage == true {
                    self?.imagePreview.image = nil
                }
            }
        })
    }
}
...