【问题标题】:Blur behind UIImage not going away after image is dismissed图像消失后 UIImage 后面的模糊不会消失
【发布时间】: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

标签: ios swift uiimageview uiimage swift3


【解决方案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,然后当您点击它时,它会关闭并返回主屏幕?
  • 所以没有办法只将当前的模糊放在一切之上?
猜你喜欢
  • 2013-02-04
  • 1970-01-01
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
相关资源
最近更新 更多