如何让 UIImageView 照片在 Swift 的时间间隔后消失
How to make a UIImageView photo disappear after a time interval in Swift
我正在开发一个用于分割的相机应用程序,我设法捕获实时照片以在 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) {
}
}
您可以使用这样的 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
}
}
})
}
}
我正在开发一个用于分割的相机应用程序,我设法捕获实时照片以在 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) {
}
}
您可以使用这样的 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
}
}
})
}
}