UITableView和UICollecionView自適應(yīng)

UITableView中在iOS8之前經(jīng)常會遇到需要計(jì)算UITableViewCell單元格的高度,UICollectionViewCell同樣會遇到這樣的情況认境,不過在iOS8之后寬高計(jì)算就非常簡單了,只需要簡單設(shè)置一下即可.

UITableView自適應(yīng)

簡單看一下效果:


UITableViewCell.png

UITableView通用設(shè)置:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [self.data count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    BookTableViewCell *cell=[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    [cell setupModel:self.data[indexPath.row]];
    return cell;
}

初始化數(shù)據(jù):

    self.tableView.estimatedRowHeight=120.0f;
    self.tableView.rowHeight=UITableViewAutomaticDimension;
    self.data=[NSMutableArray array];
    [self.tableView registerClass:[BookTableViewCell class] forCellReuseIdentifier:CellIdentifier];

    for (NSInteger i=0; i<30; i++) {
        BookModel *model=[BookModel new];
        model.imgName=@"Book";
        model.bookName=@"UITableViewCell";
        NSInteger mode=i%3;
        if (mode==0) {
            model.bookDescription=@"魏則西挟鸠,男叉信,二十一歲,生前就讀于西安電子科技大學(xué)艘希,計(jì)算機(jī)專業(yè)學(xué)生硼身,因身患滑膜肉瘤去世。魏則西曾經(jīng)的夢想是每天玩命學(xué)習(xí)覆享,每天取得巨大的進(jìn)步佳遂,大四之后去美國好好學(xué)學(xué)計(jì)算機(jī),那會是他人生最大的幸福撒顿。";
        }else if (mode==1){
            model.bookDescription=@"滑膜肉瘤是一種惡性腫瘤丑罪,目前尚無有效治療手段。魏則西是家中獨(dú)子凤壁,父母傾盡全力為他治病吩屹。輾轉(zhuǎn)北京、上海拧抖、天津煤搜、廣州各大腫瘤醫(yī)院,得到的都是壞消息唧席。魏則西在百度搜索疾病信息擦盾,第一條結(jié)果是某武警醫(yī)院(武警北京總隊(duì)第二醫(yī)院)的所謂「生物免疫療法」。魏則西一家人在北京見到了這家武警醫(yī)院的李姓主任淌哟,李主任言:這個(gè)技術(shù)不是他們的迹卢,是斯坦福研發(fā)出來的,他們是合作绞绒,有效率達(dá)到百分之八九十婶希。看著魏則西的各種報(bào)告單蓬衡,李主任對魏則西父母說:保二十年沒問題喻杈。正所謂典型的套路:「病很重,能治好狰晚,得花錢」筒饰。";
        }else if(mode==2){
            model.bookDescription=@"魏則西一家人求醫(yī)心切,但也會有所顧慮壁晒,這不會是騙人的吧瓷们?不過一看這的確是一家三甲醫(yī)院,魏則西還專門查了一下這個(gè)醫(yī)生,這個(gè)李主任還上過中央電視臺谬晕,不止一次碘裕,中央電視臺十套節(jié)目。會是假的嗎攒钳?你看帮孔,百度、三甲醫(yī)院不撑、中央臺文兢,還是斯坦福的技術(shù),這些應(yīng)該沒有問題了吧焕檬。";
        }
        [self.data addObject:model];
    }

UITableViewCell設(shè)置預(yù)估高度:

self.tableView.estimatedRowHeight=120.0f;
self.tableView.rowHeight=UITableViewAutomaticDimension;

順便可以設(shè)置一下刪除模式:

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
    return @"刪除";
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.data removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }else if (editingStyle==UITableViewCellEditingStyleInsert){
        NSInteger insertRow=indexPath.row+1;
        BookModel *model=[BookModel new];
        model.imgName=@"Book";
        model.bookName=@"UITableViewCell";
        model.bookDescription=[NSString stringWithFormat:@"插入成功:%ld",insertRow];
        [self.data insertObject:model atIndex:insertRow];
        [tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForItem:insertRow inSection:indexPath.section]] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

設(shè)置插入模式:


Snip20160508_3.png
 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleInsert;
}

UICollectionView自適應(yīng)

自適應(yīng)效果圖:


FlyElephant.png

UICollectionView數(shù)據(jù)初始化:

    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    layout.estimatedItemSize = CGSizeMake(100, 100);
    [self.collectionView registerClass:[BookCollectionViewCell class] forCellWithReuseIdentifier:CollectionViewIdentifier];
    self.collectionView.backgroundColor      = [UIColor redColor];
    self.collectionView.collectionViewLayout = layout;
    self.data                                = [NSMutableArray array];
    
    [self.data addObject:@"北京"];
    [self.data addObject:@"FlyElephant"];
    [self.data addObject:@"編程"];
    [self.data addObject:@"加班"];
    [self.data addObject:@"Objective-C"];
    [self.data addObject:@"iOS"];
    [self.data addObject:@"UICollectioView自適應(yīng)"];
}

UICollectionView初始化:

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return [self.data count];
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    BookCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CollectionViewIdentifier forIndexPath:indexPath];
    cell.contentLabel.text = self.data[indexPath.row];
    return cell;
}

自定義BookCollectionViewCell:

@implementation BookCollectionViewCell

-(instancetype)initWithFrame:(CGRect)frame{
    self=[super initWithFrame:frame];
    if (self) {
        self=[[[NSBundle mainBundle] loadNibNamed:@"BookCollectionCell" owner:self options:nil] firstObject];
        self.backgroundColor=[UIColor darkGrayColor];
        self.clipsToBounds=YES;
    }
    return self;
}

-(void)layoutSubviews{
    [super layoutSubviews];
    self.clipsToBounds=YES;
    self.layer.cornerRadius=self.frame.size.width/8;
}

@end

iOS8之后的UITableView和UICollectionView自適應(yīng)都比較簡單設(shè)置高度即可姆坚,有疑問歡迎討論~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市实愚,隨后出現(xiàn)的幾起案子兼呵,更是在濱河造成了極大的恐慌,老刑警劉巖腊敲,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萍程,死亡現(xiàn)場離奇詭異,居然都是意外死亡兔仰,警方通過查閱死者的電腦和手機(jī)茫负,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乎赴,“玉大人忍法,你說我怎么就攤上這事¢藕穑” “怎么了饿序?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長羹蚣。 經(jīng)常有香客問我原探,道長,這世上最難降的妖魔是什么顽素? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任咽弦,我火速辦了婚禮,結(jié)果婚禮上胁出,老公的妹妹穿的比我還像新娘型型。我一直安慰自己,他們只是感情好全蝶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布闹蒜。 她就那樣靜靜地躺著寺枉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绷落。 梳的紋絲不亂的頭發(fā)上姥闪,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音砌烁,去河邊找鬼甘畅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛往弓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蓄氧,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼函似,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了喉童?” 一聲冷哼從身側(cè)響起撇寞,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎堂氯,沒想到半個(gè)月后蔑担,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咽白,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年啤握,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶框。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡排抬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出授段,到底是詐尸還是另有隱情蹲蒲,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布侵贵,位于F島的核電站届搁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窍育。R本人自食惡果不足惜卡睦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漱抓。 院中可真熱鬧么翰,春花似錦、人聲如沸辽旋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至码耐,卻和暖如春追迟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骚腥。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工敦间, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人束铭。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓廓块,卻偏偏與公主長得像,于是被迫代替她去往敵國和親契沫。 傳聞我的和親對象是個(gè)殘疾皇子带猴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件懈万、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,102評論 4 62
  • 因?yàn)橐Y(jié)局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細(xì)...
    uniapp閱讀 4,414評論 0 12
  • 今天算是confression嗎拴清?我的初衷也只是想把內(nèi)心的想法講出來,也許人家被嚇到了会通,然后就當(dāng)做一個(gè)玩笑一樣扯開...
    zai顆星星送給你閱讀 408評論 0 0