如何在图像放大时隐藏背景

Posted

技术标签:

【中文标题】如何在图像放大时隐藏背景【英文标题】:how to hide background when image is zoomed in 【发布时间】:2017-05-11 01:30:26 【问题描述】:

我有一个点击手势识别器连接到我的图像视图。当图像被点击时,它会变成全屏,再次点击时,它会被关闭。用户可以通过捏合来缩放图像,但是当图像被用户按住并四处移动时,它会显示背景视图。我想隐藏背景,以便在图像被关闭之前无法看到视图。我认为我提供的图片会比我通过文字更好地解释。

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()

【问题讨论】:

全屏查看图像视图下的视图,并显示和隐藏该视图,与图像视图相同,也为该视图提供黑色或您想要的任何颜色 【参考方案1】:

您可以简单地使用backgroundElement.isHidden = true 属性隐藏元素。关闭视图后,您可以使用 backgroundElement.isHidden = false 重置背景。

【讨论】:

应该在哪个元素上调用 isHidden,我试图在 "view.isHidden=true" 上调用它,但这是不正确的【参考方案2】:

使用下面的 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 

    

当比例为 1.0 时,它是正常的 minimumZoomScale。

以下是缩放时调用的方法。用它来隐藏你的元素。

func scrollViewDidZoom(_ scrollView: UIScrollView) 
    self.lblDesc.isHidden = true
    self.btnDelete.isHidden = true

希望对你有帮助。

【讨论】:

以上是关于如何在图像放大时隐藏背景的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Microsoft Edge 中对精灵背景图像放大进行反锯齿处理?

如何使用 convert -crop 为动画 gif/放大图像添加更多背景?

仅在 html css 中将缩略图的背景图像网格放大到更高的分辨率

当用户放大 UIScrollView 时如何隐藏某些内容,然后在缩小时显示它?

图像未放大时如何停止移动图像?

如何在滚动视图中正确显示背景图像?