如何在图像放大时隐藏背景
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 中将缩略图的背景图像网格放大到更高的分辨率