我有一个点击手势识别器连接到我的图像视图。当图像被点击时,它会变成全屏,当再次点击时,它会被清除。用户可以通过挤压来缩放图像,但是当用户按住图像并四处移动时,它会显示背景视图。我想隐藏背景,这样视图就看不到了,直到图像被清除。我认为我提供的图像将比我通过语言更好地解释。
var newImageView: UIImageView!
@IBAction func imageTapped(_ sender: UITapGestureRecognizer) {
self.navigationController?.setNavigationBarHidden(true, animated: true)
let imageView = sender.view as! UIImageView
let scrollView = UIScrollView(frame: self.view.frame)
newImageView = UIImageView(image: imageView.image)
newImageView.frame = self.view.frame
newImageView.backgroundColor = .black
newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
scrollView.addGestureRecognizer(tap)
scrollView.delegate = self
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 3.0
scrollView.addSubview(newImageView)
self.view.addSubview(scrollView)
}
func viewForZooming(in scrollView: UIScrollView) -> UIView?
{
return newImageView;
}
func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
self.navigationController?.setNavigationBarHidden(false, animated: true)
sender.view?.removeFromSuperview()
}



发布于 2017-05-11 11:06:48
您可以简单地使用backgroundElement.isHidden = true属性隐藏一个元素。关闭视图后,可以使用backgroundElement.isHidden = false重置背景。
发布于 2018-08-01 18:43:13
使用UIScrollView的以下方法检查缩放比例。
func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
print(scale)
if scale == 1.0 {
self.lblDesc.isHidden = false
self.btnDelete.isHidden = false
} else {
}
}当scale为1.0时,它是正常的minimumZoomScale。
下面是当你缩放时调用的方法。使用它来隐藏您的元素。
func scrollViewDidZoom(_ scrollView: UIScrollView) {
self.lblDesc.isHidden = true
self.btnDelete.isHidden = true
}希望能对你有所帮助。
https://stackoverflow.com/questions/43905052
复制相似问题