簡體   English   中英

CALayer用背景覆蓋內容圖像

[英]CALayer overwrites contents-image with background

我有一個帶有自定義CALayer的自定義UIView。 圖層覆蓋-(void)顯示; 將CGImageRef分配給圖層content-property。 原則上,這可以按預期方式(大部分時間)運行,但在某些設備上,視圖有時會變成純白色。 實際上,我可以通過設置backgoundColor來選擇顏色。

某些設備意味着:在我的3個測試設備中,只有帶iOS7的iphone5出現故障。 支持iOS8的iPhone6 +和iPad均可使用。

有時意味着:原則上它也可以在不良設備上工作,但大約有50-50倍的機會可以獲取實際圖像或純背景...

(我正在等待一些測試人員的反饋,以獲得更好的統計信息)

實際上,我希望闡明該層或視圖(作為委托)的哪種方法,我必須覆蓋空方法才能停止這種丑陋的行為。

另外,我將嘗試將我的圖層添加為普通視圖圖層的子圖層。 但我想避免這種情況,因為最終我會在視圖的大小中得到兩層,這是相當大的...

希望有人對我有所提示...預先感謝

更新:它不僅限於iOS7,我也有運行iOS8.4的iPad的報告...

更新2:我發現了更多。 在我看來,這不是圖層合成的問題,而是CGBitmapContext的問題。
我創建了一個位圖上下文並保留對其的引用,以便在保留一些舊內容的同時呈現其他部分。
之后,我調用CGBitmapContextCreateImage()並將其生成的圖像設置為圖層的內容。
該圖像將不包含我渲染的所有內容。 為了進行測試,我實現了可以通過觸摸事件觸發內容的更新:

  • 如果我保留對圖像的引用並再次將相同的圖像設置為內容屬性,則表明相同的區域仍為白色(因此實際上該圖層正確顯示了圖像)
  • 如果我再次調用CGBitmapContextCreate()並將結果設置為圖層內容,則圖像已完成。 同時,位圖上下文沒有變化。 這意味着對CGBitmapContextCreate()的2次相應調用將返回不同的圖像?

    --

我停止弄清楚int了。 我開始認為它是Core-Graphics / Animation中的錯誤。 還是我的虐待。 它僅在較大的視圖中發生。

CATiledLayer的首次嘗試並沒有使我非常高興,但似乎是可行的方法……或者至少是一個指向我將重組代碼的方向的指針……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM