一直學(xué)習(xí)和閱讀大神們發(fā)布的文章和技術(shù),每次想自己寫點(diǎn)東西的時候總覺得沒時間,不過一句話說的好,時間擠擠就有了.以前在 CN 上面也寫過和分享過一些 文章和demo,本來準(zhǔn)備也寫在 CN 里面的,突然發(fā)現(xiàn)賬號登錄不了(尷尬!!!),反正現(xiàn)在也很少上 CN, 基本都在瀏覽簡書,索性就寫在這吧.廢話有點(diǎn)多了,正式開始.
先看看視圖結(jié)構(gòu)
運(yùn)行效果圖
demo 中分別用直接設(shè)置 Frame 和 autolayout 來實(shí)現(xiàn) cell 高度自適應(yīng).并對比兩種環(huán)境下載快速滑動過程中檢測滑動流暢度,相對比,在 Frame 環(huán)境下,流暢度相對高點(diǎn),也就是掉幀低,當(dāng)然在 Frame 形式下,代碼量要大一點(diǎn),在就是在一些適配下,略顯麻煩.這也是在早期開發(fā)中常用的設(shè)計環(huán)境,就不多說,直接上代碼:
直接用一個 model 計算保存 Frame
-(void)setModel:(TestModel*)model
{
_model = model;
_iconImageF=CGRectMake(10,10,60,60);
_nameLableF=CGRectMake(CGRectGetMaxX(_iconImageF)+10,10,0,0);
CGSizesize = [model.name_keysizeWithAttributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:17.f]}];
_nameLableF.size= size;
size = [model.time_keysizeWithAttributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:17.f]}];
_timeLableF=CGRectMake(CGRectGetMaxX(_iconImageF)+10,CGRectGetMaxY(_iconImageF)-size.height,0,0);
_timeLableF.size= size;
size = [model.text_keyboundingRectWithSize:CGSizeMake([UIScreenmainScreen].bounds.size.width-20,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeadingattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:17.f]}context:nil].size;
_textLableF=CGRectMake(10,CGRectGetMaxY(_iconImageF)+10, [UIScreenmainScreen].bounds.size.width-20, size.height);
_topViewF=CGRectMake(0,0, [UIScreenmainScreen].bounds.size.width,CGRectGetMaxY(_textLableF));
_otherLableF=CGRectMake(0,0, size.width, size.height);
CGFloatmanger =10;
CGFloaty =0;
CGFloatw = (([UIScreenmainScreen].bounds.size.width-20-4*manger))/3;
CGFloath = w;
int col = (int)(model.images.count-1) /3;
y = col * (w + manger)+manger;
_otherViewF = CGRectMake(10,_topViewF.size.height+10, [UIScreenmainScreen].bounds.size.width-20, y+h+10);
_height = CGRectGetMaxY(_otherViewF)+10;
}