在tableView:cellForRowAtIndexPath
中,我將imageView.image
設置爲1x1或60x60佔位符圖像,而單元格的高度爲300.我還將imageView.frame
設置爲(0,0, 300, 300)
。如何使UITableView不改變imageView的框架,或調整圖像大小來填充框架大小?
然後我打電話給方法downloadImageFromURL:andSetIntoCell
,它立即添加一個UIActivityIndicatorView
並將幀設置爲(0,0, 300, 300)
(下載在一個線程中異步完成,並且該方法不會等待下載,而只是立即返回)。
但是,在tableView:cellForRowAtIndexPath
返回單元格之後,調整imageView.frame
以使原始60x60大小的圖像垂直居中。如果該佔位符圖像是800x800,實際上它工作正常:幀仍然是(0,0,300,300),圖像縮小了,但是當圖像是60x60時,幀實際上被調整爲類似於(0,120, 60,60),這是可以的,因爲佔位符是透明的,但UIActivityIndicatorView
作爲imageView
的子視圖被添加,因此被垂直推下,高度爲300並覆蓋下一行的一部分。
是否有辦法告訴UITableView
不要更改imageView.frame
,或者通過編程方式輕鬆地將圖像大小調整爲300x300(最好不要使用BitmapContext),或者要求imageView
進行縮放以填充框架?
我說:
cell.imageView.contentMode = UIViewContentModeScaleToFill;
設置imageView.frame
,其正常工作,如果我在一個UIView拉伸之後,但UITableView中仍會顯示原來的60x60的大小,並調整imageView.frame
垂直居中。
(我認爲在這種情況下,我只能讓UIActivityIndicatorView
圖像的尺寸:60×60,但據說它是1x1透明圖像佔位符做)
更新:順便說一下,我甚至補充:返回電池
self.table.autoresizesSubviews = NO;
self.table.autoresizingMask = UIViewAutoresizingNone;
cell.autoresizesSubviews = NO;
cell.autoresizingMask = UIViewAutoresizingNone;
cell.imageView.autoresizesSubviews = NO;
cell.imageView.autoresizingMask = UIViewAutoresizingNone;
之前,它是一樣的:ImageView的重新定位和調整大小。
我面臨同樣的問題。你是否能夠解決這個問題,如果是的話,那麼如何? – pkc456