在从A界面push到B界面的时候,页面会出现卡顿问题,这是怎么回事呢?怎么避免这个问题?
(1)什么情况下会出现:
从A控制器push到B控制器的时候,如果B控制器没有设置它的self.view的背景颜色的话,就会出现页面“卡顿”的现象,尤其是当A界面上有控件的时候卡顿现象很明显。
(2)产生原因:
产生原因是,1.UIViewController的默认颜色都是透明的;2.push的时候,B页面先覆盖在A页面上面,然后A页面从又往左的移出去。综合上面两个原因导致的“卡顿”现象。
网上有说是因为透明颜色叠加导致的色值问题,感觉挺有意思,两个透明颜色的叠加会出现这个问题?透明颜色叠加不也是透明吗?
(3)具体原因:
A和B的页面背景都是透明的,push时,B覆盖在A上面,这时候,透过B页面,是能看见B页面的控件的。B页面要从又往左侧移出屏幕,这是需要一个过程的,而这个过程呈现在用户的眼前就是“卡顿”了一下。
(4)实质:
其实不是页面卡顿了,而是页面透明,通过B页面看见了A页面从又往左移除屏幕的过程。
(5)解决
一般的只要B页面的页面颜色不是透明的就不会看到这种“卡顿”的现象。解决办法就是给B页面加个背静颜色。后者在所有UIViewController的基类连设置背景色,使其不是透明的就行了。
网友评论