當(dāng)圖層屬性的混合體被指定為在未預(yù)合成之前不能直接在屏幕中繪制時(shí),屏幕外渲染就被喚起了。屏幕外渲染并不意味著軟件繪制,但是它意味著圖層必須在被顯示之前在一個(gè)屏幕外上下文中被渲染(不論CPU還是GPU)。圖層的以下屬性將會(huì)觸發(fā)屏幕外繪制:
圓角(當(dāng)和maskToBounds一起使用時(shí))
圖層蒙板
-
陰影
屏幕外渲染和我們啟用光柵化時(shí)相似,除了它并沒(méi)有像光柵化圖層那么消耗大,子圖層并沒(méi)有被影響到,而且結(jié)果也沒(méi)有被緩存,所以不會(huì)有長(zhǎng)期的內(nèi)存占用。但是,如果太多圖層在屏幕外渲染依然會(huì)影響到性能。
有時(shí)候我們可以把那些需要屏幕外繪制的圖層開(kāi)啟光柵化以作為一個(gè)優(yōu)化方式,前提是這些圖層并不會(huì)被頻繁地重繪。
對(duì)于那些需要?jiǎng)赢嫸乙谄聊煌怃秩镜膱D層來(lái)說(shuō),你可以用CAShapeLayer,contentsCenter或者shadowPath來(lái)獲得同樣的表現(xiàn)而且較少地影響到性能。