图像消失后 UIImage 后面的模糊不会消失

Posted

技术标签:

【中文标题】图像消失后 UIImage 后面的模糊不会消失【英文标题】:Blur behind UIImage not going away after image is dismissed 【发布时间】:2017-01-14 00:07:26 【问题描述】:

我一直试图在点击图像后在图像后面添加模糊效果,但是在我关闭图像后它并没有消失。模糊并没有消失。

func didTapImageView(_ sender: UITapGestureRecognizer) 

    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame = self.view.frame

    let imageView = sender.view as! UIImageView
    let newImageView = UIImageView(image: imageView.image)
    newImageView.frame = self.view.frame
    newImageView.layer.masksToBounds = true

    //newImageView.backgroundColor = UIColor.black.withAlphaComponent(1)
    newImageView.contentMode = UIViewContentMode.scaleAspectFit
    newImageView.isUserInteractionEnabled = true
    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
    newImageView.addGestureRecognizer(tap)
    //blurEffectView.addGestureRecognizer(tap)
    self.view.addSubview(blurEffectView)
    self.view.addSubview(newImageView)


func dismissFullscreenImage(_ sender: UITapGestureRecognizer) 
    sender.view?.removeFromSuperview()

点击后如何消除模糊?还有,如何让它全屏显示?它似乎也不起作用。

【问题讨论】:

how do I make it full screen 是什么意思? @aircraft 是的,就像现在显示在标签栏后面的图像一样。我希望它在您点击照片时像在 Twitter 应用上一样全屏显示。 @BrunoRecillias - 当您对图像的 contentMode.scaleAspectFit 时 - 除非图像的尺寸在比例上与您设备的屏幕尺寸相等,否则可能不会是全屏。你可能想说UIViewContentMode.scaleAspectFillUIViewContentMode.scaleToFill 【参考方案1】:

在我看来,当您调用 dismissFullScreenImage 时,您只是从超级视图中删除了 UIImageViewblurEffectView 完全是一个单独的子视图。您必须为效果视图设置一个属性,然后在您要求删除图像时将其删除。在你班级的顶部说类似这样的话:

var blurEffectView:UIVisualEffectView!

然后在你的didTapImageView:

let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = self.view.frame

那么当你打电话给dismissFullScreenImage时,你需要说这样的话:

func dismissFullscreenImage(_ sender: UITapGestureRecognizer) 
    sender.view?.removeFromSuperview()
    blurEffectView.removeFromSuperview()

我不知道你的意思是“我如何让它全屏显示?” .. 视觉效果已经是全屏了。至少在您的屏幕截图上看起来是这样的。

【讨论】:

全屏我的意思是在一切之上。现在的方式我仍然可以在表格视图上向下滚动,并且可以看到导航栏和标签栏 @BrunoRecillias - 所以你的意思是你想让它一直固定在屏幕的边缘,即使你在滚动? 就像当您点击 twitter 或 Facebook 上的图像时,它会全屏显示,您可以点击/向下滚动以关闭图像。就我而言,我点击了,但图像没有全屏显示。我不知道这是否有意义 @BrunoRecillas - 我认为您想要做的是制作一个仅显示图像的整个 ViewController,然后当您点击它时,它会关闭并返回主屏幕? 所以没有办法只将当前的模糊放在一切之上?

以上是关于图像消失后 UIImage 后面的模糊不会消失的主要内容,如果未能解决你的问题,请参考以下文章

点击后jQuery UI Tooltip不会消失

带有图像视图、2 个标签、按钮的自动布局 - 标签在旋转后消失

在ui图像查看器中上传的照片保持消失

日历验证错误仅在第二次通过 Jquery UI 选择日期后才消失

为啥我的 UI 元素在执行 paint(); 后消失了?

仅在 Swift 3 中,圆形 UIImage 在 UITableViewCell 中消失