图像消失后 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.scaleAspectFill
或UIViewContentMode.scaleToFill
【参考方案1】:
在我看来,当您调用 dismissFullScreenImage
时,您只是从超级视图中删除了 UIImageView
。 blurEffectView
完全是一个单独的子视图。您必须为效果视图设置一个属性,然后在您要求删除图像时将其删除。在你班级的顶部说类似这样的话:
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 后面的模糊不会消失的主要内容,如果未能解决你的问题,请参考以下文章
带有图像视图、2 个标签、按钮的自动布局 - 标签在旋转后消失