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