好吧,簡短的回答,混合必須發生任何一種方式來正確顯示透明的角落像素。但是,如果您希望生成的視圖也以某種方式製作動畫(並且記住,滾動是最常見的動畫類型),通常這應該只是一個問題。此外,當我的視圖變得複雜時,我能夠重新創建「cornerRadius」會導致舊設備(我的情況爲iPhone 3G)渲染錯誤的情況。對於需要高性能動畫的情況,以下是我所遵循的建議。首先,如果您只需要具有圓角的單曲線的資源(只要所需的曲率相同,則不同的比例很好),請將它們保存以避免額外計算「cornerRadius」在運行時。其次,不要在任何不需要它的地方使用透明度(例如當背景實際上是純色時),並且總是爲「不透明」屬性指定正確的值以幫助系統更有效地計算畫畫。
三,想辦法儘量減少透明視圖的大小。例如,對於具有透明元素(例如圓角)的大型邊框視圖,考慮將視圖分成3個(頂部,中部,底部)或7個(4個角,頂部中間,中間,底部中間)部分,保留透明部分儘可能小,並將矩形部分標記爲不透明,背景堅實。第四,在scrollViews中繪製大量文本的情況下(例如高度自定義的UITableViewCell),請考慮使用「drawRect:」方法來更高效地渲染這些部分。繼續使用圖像元素的子視圖,以便在繪製前(子視圖)和「即時」繪圖(繪製圖形:)之間在整個視圖之間分割繪製時間。顯然,實驗(滾動時每秒的幀數)可能表明,違反這種「經驗法則」對於您的特定視圖可能是最佳的。
最後,確保您有足夠的時間來使用分析工具(尤其是CoreAnimation)進行實驗。我發現使用最想要的最慢設備進行改進是最容易的,而在較新設備上的結果看起來很棒。