当我点击小图片时,我正试图让图像视图全屏显示。但是当我点击图像时,图像显示速度非常快。我可以添加一些转换时间来延迟显示全屏图像吗?
@IBAction func uploadImgAction(_ sender: Any) {
let tapgesture = UITapGestureRecognizer(target: self, action: #selector(DeleteJobViewController.tap))
tapgesture.numberOfTapsRequired = 1
reasonImg.addGestureRecognizer(tapgesture)
}
func tap(){
print("tap")
let newImageView = UIImageView(image: reasonImg.image)
newImageView.frame = self.view.frame
newImageView.backgroundColor = .black
newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
newImageView.addGestureRecognizer(tap)
self.view.addSubview(newImageView)
}
func dismissFullscreenImage(sender: UITapGestureRecognizer) {
sender.view?.alpha = 1
UIView.animate(withDuration: 1.5, animations: {
sender.view?.alpha = 0
sender.view?.removeFromSuperview()
})
}
答案 0 :(得分:0)
尝试将self.view.addSubview(newImageView)
行替换为:
DispatchQueue.main.async {
UIView.transition(with: self.view, duration:0.6, options: UIViewAnimationOptions.showHideTransitionViews, animations: {
self.view.addSubview(self.newImageView)
}, completion: nil)
}
您还可以在运行此代码之前尝试设置newImageView.alpha = 0
:
UIView.animate(withDuration: 1.5, animations: {
self.newImageView.alpha = 1.0
})
要为消失效果设置动画,请在上面的代码中将addSubview
语句替换为newImageView.removeFromSuperview()
。
同样,您可以在设置newImageView.alpha = 1
:
func dismissFullscreenImage(sender: UITapGestureRecognizer) {
UIView.animate(withDuration: 1.5, animations: {
self.newImageView.alpha = 0
})
}
编辑:
请在视图控制器的顶部添加newImageView
作为属性。
然后在tap
函数中设置此而不是let newImageView
:
self.newImageView = UIImageView(image: reasonImg.image)
现在,如果你运行代码,它应该编译。
答案 1 :(得分:0)
yourImageView.alpha = 0
*your addSubview in the middle
UIView.animate(withDuration: 0.5, animations: {
yourImageView.alpha = 1
})
首先将图像设置为不可见,然后设置动画(在我的示例中为0.5秒)。
答案 2 :(得分:0)
func tap() {
print("tap")
let newImageView = UIImageView(image: reasonImg.image)
newImageView.frame = self.view.frame
newImageView.transform = CGAffineTransform.init(scaleX: 0.0, y: 0.0)
newImageView.backgroundColor = .black
newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
newImageView.addGestureRecognizer(tap)
self.view.addSubview(newImageView)
UIView.animate(withDuration: 0.5, animations: {
newImageView.transform = CGAffineTransform.init(scaleX: 1.0, y: 1.0)
})
}