2017-12-18 218 views
0

當按下按鈕時,我在視圖右上角有一個菜單按鈕(+),其他幾個按鈕都會下拉以供用戶選擇。調暗按鈕背景中的所有視圖

我想將所有這些按鈕的所有視圖調暗效率。

我現在正在做的方式是通過在所有內容上放置一個透明視圖並在單擊該按鈕後更改背景顏色以及其透明度。

if button.isHidden { 
    self.dimView!.backgroundColor = UIColor.black 
    self.dimView!.alpha = 0.7 
} else { 
    self.dimView!.alpha = 0 
} 

這種方法能達到這種效率嗎?有效的意義在於它不會干擾觸摸並且不會減慢手機的速度?

+0

if this視圖在背景中,那麼它不會干擾下拉按鈕的觸摸。 –

+0

@ShamasS該視圖位於後臺的桌面視圖和其他標籤之上,即使它位於這些視圖之上,但似乎不會影響觸摸,但我不確定它是否會導致tableview滯後。 – gencode

回答

1

你的調圖應該在它涵蓋了意見禁用水龍頭時,它的alpha爲0.5以上。

如果將alpha設置爲0,則應該設置爲view.hidden=true。這樣渲染系統不會試圖將其與其他視圖合成在屏幕上。 (在將alpha設置爲0.7之前設置爲hidden=false,並且除了將alpha設置爲0之外,還可以設置hidden=true。除非將Alpha更改設爲動畫,否則alpha值無關。)

+0

感謝這就是我一直在尋找的東西,但只是要清楚,這是做到這一點的最佳方式嗎? – gencode

+1

我不確定**最好的**方式,但這是我所做的,並且運作良好。 –

0

那麼透明視圖應該在你的ViewController的所有子視圖的背景中,以達到預期的效果。

關於高效和優化的方式,那麼這將是更好的設置來看不透明屬性,這裏是說明: -

「不透明」屬性提供一個提示繪圖系統如何它 應該對待視圖。如果設置爲true,則繪圖系統將視圖視爲完全不透明,這允許繪圖系統優化一些 繪圖操作並提高性能。如果設置爲false,則 繪圖系統通常會將視圖與其他內容進行合成。該屬性的默認值爲 。

一個不透明的視圖預計會填充完全不透明的 內容 - 也就是說,內容的alpha值應爲1.0。如果視圖不透明並且未填充其邊界或完全包含 或部分透明的內容,則結果是不可預測的。如果視圖 完全或部分透明,則您應該始終將此屬性的值設置爲false。

的代碼應該是這樣的: -

view.backgroundColor = UIColor.black.withAlphaComponent(0.75) 
view.isOpaque = false 
+0

對不起,我認爲我的問題不是很清楚,我在所有標籤和按鈕的頂部添加了定期視圖,但在我的(+)按鈕下方添加了定期視圖。當我點擊這個按鈕時,將我放在其他視圖頂部的視圖變爲黑色,並使其變爲透明。 – gencode