我畫的內容,以一個UITableViewCell,它運作良好畫畫,但我想了解是否有這樣做的更好的方法。上優化的UITableViewCell
每個單元具有以下組件:
- 縮略圖在左側 - 因此它被加載異步
- 標題字符串可能來自服務器 - 可變長度,從而每個小區可以是不同的高度
- 時間戳字符串
- 漸變背景 - 漸變背景 - 漸變從單元格的頂部到底部,並且是半透明的,以便背景色以光澤閃耀
目前運作良好。發生附圖如下:
的UITableViewController inits /重用的小區,需要的數據集,並調用
[細胞setNeedsDisplay]
該單元具有用於縮略圖一個的CALayer - thumbnailLayer
在單元格的drawRect中繪製了漸變背景和兩個字符串
單元格的drawRect然後調用setIcon - 它獲取縮略圖並將圖像設置爲thumbnailLayer的內容。如果在本地找不到圖像,它會將加載圖像設置爲thumbnailLayer的內容,並異步獲取縮略圖。一旦縮略圖被接收,它被再次&調用重置的setIcon重置thumbnailLayer.contents
這所有當前的工作,但使用儀器我看到縮略圖與梯度合成。我曾嘗試以下解決這個問題:
細胞的backgroundView設置,其的drawRect提請梯度,使得細胞的drawRect可以借鑑的縮略圖,並使用setNeedsDisplayInRect可以讓我以後只重繪縮略圖視圖它加載---但是這導致了backgroundView的繪圖(漸變)覆蓋單元格的繪圖(文本)。
我只是在單元格的drawRect中繪製縮略圖,但是當setNeedsDisplay被調用時,drawRect會重疊另一個圖像,並且加載圖像可能會顯示。我會清除矩形,但是我必須重繪漸變。我想嘗試在CAGradientLayer中繪製漸變並存儲對它的引用,所以我可以快速重繪它,但我想如果單元格的高度發生變化,我將不得不重繪漸變。
任何想法?我確定我錯過了一些東西,所以任何幫助都會很棒。
凹凸 - 任何人有任何想法?