對于子視圖加到父視圖這樣的操作九巡,作為IOS coder來說一天會寫很多次蹂季,但是如果二個view不同顏色的話冕广,你知道背后發(fā)生了什么嗎?這兒不討論復雜的圖像合成,只是討論下如何得出合成后的顏色取值乏盐。原文link: https://objccn.io/issue-3-1/
1. 有二個view: ?view1(父視圖 ==>紅色) ,view2(子視圖 ==>藍色), 完全相同的bounds使用重疊
2. 重疊后的顏色取值計算:
R = S + D * (1 -Sa) ,這是源文給的計算公式佳窑,我翻譯了一下幫助理解。
Result ?= subview * subview.alpha + superView *superView.alpha * (1 - subview.alhpa)
3. 按上面公式來說父能,如果二個view的alpha值都為1的話神凑,那么result = subview 的顏色也就是藍色
4. 如果二個alpha都不為1的情況下,GPU就得幫我們計算新值了何吝,對一個像素計算一次溉委,一個640*1136的要在1/60秒內計算XX次,可見一個alpha值的影響還是很大的爱榕。
結論:對于沒有必要設置alpha的view,保持其值為1瓣喊,可以省掉GPU的大量工作。
PS: 如果是有很多很多子view呢黔酥?這個工作量是有多大藻三,所以我們盡量少重疊view吧洪橘。