我有一个UITabBar
,其中包含“主要”和“个人资料”部分。在配置文件中,我使用填充整个屏幕的背景图像,具有模糊效果。它的效果非常好。当我返回主页并再次返回配置文件时,会在第一个模糊效果上添加新的模糊效果。
如果我将对应的代码设置为viewDidLoad()
中的模糊效果,它可以正常工作,效果只会添加一次。但是有一个问题,模糊效果并没有填满整个屏幕。我想这是因为在viewDidLoad
中没有人知道imageView
的帧,所以它填充了图像的3/4部分。
我的问题是:我该如何解决这个问题?假设它是由图像帧引起的,现在还不知道。如何设置框架度量?
如果你认为它是由另一件事引起的,请告诉我可能是什么。
这是我正在使用的模糊代码?
self.picBlurView = UIVisualEffectView(effect: self.picBlur)
self.picBlurView.frame = self.profileSubView.bounds
self.profileSubView.addSubview(self.picBlurView)
非常感谢。
答案 0 :(得分:1)
您可以在班级中设置标记,例如“_alreadyBlurred
”。您在viewDidLoad
。
在viewWillAppear
中,您检查flag == NO
是否有效,并设置flag = YES
。
然后在下一个调用中它不会添加另一个模糊效果,并且在此方法中你知道框架。
代码:
在viewWillAppear中:
if (_myBlurView == nil) {
....
// do blur effect and add
....
}
答案 1 :(得分:1)
由于您已将picBlurView
作为属性,因此只需检查它是否存在即可。如果不存在,则创建并添加它。否则什么都不做。在viewWillAppear
中执行此操作。
if (self.picBlurView == nil){
self.picBlurView = UIVisualEffectView(effect: self.picBlur)
self.picBlurView.frame = self.profileSubView.bounds
self.profileSubView.addSubview(self.picBlurView)
}
您可能希望实现方法willAnimateRotationToInterfaceOrientation
,以便在轮换发生时重新应用模糊效果(如果这对您很重要)。在这里,您只需替换最初添加的那个。