我在我的tableView中有拉伸圖像的問題。直到今天我用了320px寬度的靜態backgroundimages。stretchableImageWithLeftCap: - > drawInRect - >很慢?
但是,因爲我也想支持風景,我以爲我切換到可伸縮圖像,而不是使用單獨的PNG文件。
我注意到的第一件事是,滾動性能非常糟糕。 我沒有改變任何東西。
之後,我開始測量一些東西,並從可伸縮圖像旁邊的繪圖例程中刪除了所有東西。
與使用與backroundRect尺寸相同的非拉伸圖像相比,「drawContentView」方法需要10倍的時間。 隨着拉伸滯後很容易看到。沒有它就像魅力一樣咆哮。
static UIImage *greyBackground = nil;
+ (void)initialize
{
greyBackground = [[[UIImage imageNamed:@"back_gray.png"]stretchableImageWithLeftCapWidth:65.0 topCapHeight:0.0]retain];
}
- (void)drawContentView:(CGRect)r {
CGRect backgroundRect = contentView.bounds;
[greyBackground drawInRect:backgroundRect];
}
這是真的那麼糟糕的表現,還是這裏出了什麼問題? 在iPhone 4上測試,所以應該足夠強大。 : -/
我已經考慮過緩存正確大小的圖像,而不是可拉伸的圖像,並在屏幕旋轉後使用新大小重新創建它。
但我知道很多應用程序使用單元格背景圖像和不同的單元格高度(例如Twitter a.k.a. Tweetie)並且仍然快速地滾動。
所以,它應該通常更好,或者是stretchableImageWithLeftCapWidth我最好避免?
我對自定義單元格背景不是很熟悉,但是需要手動繪圖嗎?在UIView中沒有backgroundImage屬性嗎? 另外,緩存聽起來非常好,我會嘗試,如果沒有其他方式比使用自定義繪圖功能。 – 2010-12-08 20:56:46