在從A界面push到B界面的時(shí)候,頁面會(huì)出現(xiàn)卡頓問題,這是怎么回事呢?怎么避免這個(gè)問題?
(1)什么情況下會(huì)出現(xiàn):
從A控制器push到B控制器的時(shí)候,如果B控制器沒有設(shè)置它的self.view的背景顏色的話,就會(huì)出現(xiàn)頁面“卡頓”的現(xiàn)象,尤其是當(dāng)A界面上有控件的時(shí)候卡頓現(xiàn)象很明顯。
(2)產(chǎn)生原因:
產(chǎn)生原因是,1.UIViewController的默認(rèn)顏色都是透明的;2.push的時(shí)候,B頁面先覆蓋在A頁面上面,然后A頁面從又往左的移出去。綜合上面兩個(gè)原因?qū)е碌摹翱D”現(xiàn)象。
網(wǎng)上有說是因?yàn)橥该黝伾B加導(dǎo)致的色值問題,感覺挺有意思,兩個(gè)透明顏色的疊加會(huì)出現(xiàn)這個(gè)問題?透明顏色疊加不也是透明嗎?
(3)具體原因:
A和B的頁面背景都是透明的,push時(shí),B覆蓋在A上面,這時(shí)候,透過B頁面,是能看見B頁面的控件的。B頁面要從又往左側(cè)移出屏幕,這是需要一個(gè)過程的,而這個(gè)過程呈現(xiàn)在用戶的眼前就是“卡頓”了一下。
(4)實(shí)質(zhì):
其實(shí)不是頁面卡頓了,而是頁面透明,通過B頁面看見了A頁面從又往左移除屏幕的過程。
(5)解決
一般的只要B頁面的頁面顏色不是透明的就不會(huì)看到這種“卡頓”的現(xiàn)象。解決辦法就是給B頁面加個(gè)背靜顏色。后者在所有UIViewController的基類連設(shè)置背景色,使其不是透明的就行了。