UITableView可以算是使用頻率最高的組件之一的,在開發過程中經常需要展示一些簡單的信息列表常見列表佈局 如圖,很多頁面其實就是這種展示結果,通常需要imageView,textLabel,detailTextlabel,而UITableViewCell本身提供了方便的自動佈局(當有圖片和沒圖
UITableView
可以算是使用頻率最高的組件之一的,在開發過程中經常需要展示一些簡單的信息列表
如圖,很多頁面其實就是這種展示結果,通常需要imageView
,textLabel
,detailTextlabel
,而UITableViewCell
本身提供了方便的自動佈局(當有圖片和沒圖片時,textLabel和detailLabel的位置會左右自動調整). 但是圖片的大小卻是沒有辦法固定的(直接設置imageView.frame
是無法固定imageView
的大小的),那麼一般來說解決這個問題的辦法有兩種:
- 固定顯示圖片的大小(包括PlaceHolder)
- 自定義tableViewCell,添加自定義的
imageView
,textLabel
和detailTextLabel
這兩種方式都可以解決這個問題,但是這兩種方式其實都挺麻煩的,能否直接固定imageView的大小呢? 方法是有的,只需要重載layoutSubviews
即可
派生UITableViewCell
1
|
|
這樣,我們只要使用MMCell
就可以固定imageView
的大小了,且大小為PlaceHolder.png
的大小(一般來說這種頁面都會使用一個PlaceHolder.png
來顯示預設圖片).
原理是在UItableVeiw
的layoutSubviews
調用時,會根據imageView.image
的大小來調整imageView
,textLabel
,detailTextLabel
的位置,在此之前我們先將imageView.image
設置為PlaceHolder.png
圖片,等待重新佈局完後再將原本的圖片設置回去就可以了