1.最近做的一個項目用到了流水布局,簡單粗暴,找了個demo放進去.剛開始靜態(tài)頁面感覺還不錯.
demo: http://www.cocoachina.com/ios/20160407/15872.html
最關(guān)鍵的是圖片下面還有4個label和一個imageView, 修改demo里的原始布局,讓圖片和文字高度自適應(yīng)
圖片和文字都沒設(shè)置高度.
問題一:加載網(wǎng)絡(luò)圖片的時候,下拉刷新,圖片高度和文字高度發(fā)生變化.
解決方案:計算文字的高度,文字高度固定后,刷新時布局不會發(fā)生改變.
計算文字高度方法:
/*
@param width限制字符串顯示區(qū)域的寬度
@result float返回的高度
*/
CGSizetitleSize = [textboundingRectWithSize:CGSizeMake(width,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:12]}context:nil].size;
問題二:圖片寬高到底是客戶端計算呢?還是服務(wù)端獲取呢.我更傾向于服務(wù)器獲取,這對強大的服務(wù)器來說應(yīng)該是小菜. 但是不知道怎么回事,可能是服務(wù)器配置太渣,后臺一加入獲取寬高的函數(shù)就接口就請求超時,這搞得我非常郁悶,最后還是客戶端自己下載圖片獲取寬高吧.
下載圖片的方法:
[SDWebImageManager.sharedManagerloadImageWithURL:[NSURLURLWithString:model.view]options:SDWebImageRetryFailedprogress:nilcompleted:^(UIImage*_Nullableimage,NSData*_Nullabledata,NSError*_Nullableerror,SDImageCacheTypecacheType,BOOLfinished,NSURL*_NullableimageURL) {
}];
不過還存在瑕疵:寬高需要賦初始值.不然會卡住,一進入界面,由于圖片沒有下載下來導致顯示的圖片高度不是真實高度.
最終的實現(xiàn)的效果是: