2015-04-17 55 views
0

我有一個UITabBar,與部分,「主」和「輪廓」。在配置文件中,我使用填充整個屏幕的背景圖像,具有模糊效果。它工作得很好。當我回到主畫面並再次返回到配置文件時,會在第一個模糊效果上添加新的模糊效果。模糊效果重複每次我打開一看

如果我把它工作正常對應設定在viewDidLoad()模糊效果的代碼,效果僅增加了一次。但是有一個問題,模糊效果不能填滿整個屏幕。我想這是因爲viewDidLoad沒有人知道imageView的幀,所以它填充了圖像的3/4部分。

我的問題是:我該如何解決這個問題?假設它是由於圖像幀引起的,那現在是未知的。我如何設置框架措施?

如果您認爲這是由另一件事引起的,告訴我可以做些什麼。

這是我使用的模糊代碼?

self.picBlurView = UIVisualEffectView(effect: self.picBlur) 
self.picBlurView.frame = self.profileSubView.bounds  
self.profileSubView.addSubview(self.picBlurView) 

非常感謝。

+0

在自動佈局應用了更改後,調整didlayoutSubviews中的blurView的大小。 – TheCodingArt

回答

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,這樣,當旋轉發生如果這對你很重要,你可以重新應用模糊效果。在這裏你只需要替換原來添加的那個。

1

您可以在類如「_alreadyBlurred」設置一個標誌。您在viewDidLoad中將其設置爲NO。

viewWillAppear中,您檢查是否flag == NO,如果是這樣,則使模糊效果並設置flag = YES

然後在接下來的調用它不會添加其他模糊效果,並在此方法你知道框架。

代碼:

在viewWillAppear中:

if (_myBlurView == nil) { 
    .... 
    // do blur effect and add 
    .... 
} 
+0

非常感謝。我認爲這是解決方案!但我不知道如何設置一個標誌,我不知道如何檢查它!我所做的解決這個問題的方法是從超級視圖中刪除每次視圖消失時的模糊效果,它可以工作,但我知道這不是如何完成的。 –

+0

用演示代碼更新了我的答案。 –

+0

你不需要一個新的屬性。只需使用self.picBlurView。如果尚未創建,請創建並添加。 –