iOS UITableView小記錄

一個(gè)app基本少不了UITableView电谣,甚至有的app一半以上的視圖都使用了UITableView秽梅,所以UITableView在iOS中占據(jù)著重要的位置。以下用來(lái)記錄一個(gè)UITableView使用的過(guò)程中的一些小知識(shí)剿牺。

  • 簡(jiǎn)單炫酷又好像沒(méi)啥用的動(dòng)畫(huà)

huadddd.gif

要實(shí)現(xiàn)這個(gè)效果企垦,只需要在- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath里面:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    
    cell.layer.transform = CATransform3DMakeScale(0.1, 0.1, 1);
    //還原
    [UIView animateWithDuration:1 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
}
  • cell自帶樣式的顏色

  • 通過(guò)tintcolor設(shè)置
  • cell.tintColor = [UIColor blackColor];
1.jpg
  • 刪除

UITableView 編輯狀態(tài)下 , 刪除cell 時(shí)晒来, 一般用
[_tableView deselectRowAtIndexPath:@[indexPath] animated:YES];
進(jìn)行刪除單行操作钞诡,但是在多個(gè)section里面進(jìn)行刪除單行時(shí)可能報(bào)以下錯(cuò)誤:

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.30.14/UITableView.m:1704

因?yàn)楫?dāng)其中一個(gè)section刪除僅剩下一個(gè)cell時(shí),再進(jìn)行刪除就需要?jiǎng)h除整個(gè)section湃崩,這時(shí)可以使用:
- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;

  • 插入或者重載

    很多需求可能會(huì)用到不規(guī)則cell列表荧降,而調(diào)用insert和reload方法都會(huì)遍歷一遍全部cell高度獲取函數(shù)。

    • insert
      接收到新的數(shù)據(jù)時(shí)攒读,加入數(shù)據(jù)源之后朵诫,使用insert添加cell
      查看打印信息:

2016-06-29 11:22:49.799[1318:49268] insert
2016-06-29 11:22:49.799[1318:49268] 進(jìn)入numberOfSectionsInTableView:
2016-06-29 11:22:49.800[1318:49268] 進(jìn)入heightForRowAtIndexPath:
...
2016-06-29 11:22:49.808[1318:49268] 進(jìn)入heightForRowAtIndexPath:


  *  reload
接收到新的數(shù)據(jù)時(shí),加入數(shù)據(jù)源之后薄扁,直接調(diào)用reload
查看打印信息:

2016-06-29 11:27:39.899[1318:49268] reload
2016-06-29 11:27:39.900[1318:49268] 進(jìn)入numberOfSectionsInTableView:
2016-06-29 11:27:39.900[1318:49268] 進(jìn)入numberOfRowsInSection:
2016-06-29 11:27:39.900[1318:49268] 進(jìn)入heightForRowAtIndexPath:
...
2016-06-29 11:27:39.907[1318:49268] 進(jìn)入heightForRowAtIndexPath:
2016-06-29 11:27:39.923[1318:49268] 進(jìn)入heightForRowAtIndexPath:
2016-06-29 11:27:39.928[1318:49268] 進(jìn)入cellForRowAtIndexPath:
2016-06-29 11:27:39.929[1318:49268] 進(jìn)入heightForRowAtIndexPath:
2016-06-29 11:27:39.929[1318:49268] 進(jìn)入cellForRowAtIndexPath:
...
2016-06-29 11:27:40.008[1318:49268] 進(jìn)入heightForRowAtIndexPath:
2016-06-29 11:27:40.092[1318:49268] 進(jìn)入cellForRowAtIndexPath:


  >  insert和reload的不同在于如果insert的cell不是即將顯示的剪返,就不會(huì)重新遍歷屏幕中的cell。
所以要提高tableview效率:
>  1 在返回高度的協(xié)議中``- (CGFloat)tableView:(UITableView  *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath``最好只進(jìn)行返回高度邓梅,而不是計(jì)算完高度后返回脱盲。

 > 2 如果``- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath``中處理的事件比較多,那最好還是用insert來(lái)添加cell日缨。




* ###  cell分割線
 uitableviewcell的默認(rèn)分割線左邊會(huì)有15像素的空白钱反,如果想要一條全屏的分割線,要么分割線風(fēng)格設(shè)置``UITableViewCellSeparatorStyleNone``殿遂,然后自己加一條诈铛,要么設(shè)置tableview和cell的SeparatorInset:
  在viewDidLayoutSubviews中

  • (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
    [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }
    }

 在cell設(shè)置里面:

if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}

if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市墨礁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耳峦,老刑警劉巖恩静,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡驶乾,警方通過(guò)查閱死者的電腦和手機(jī)邑飒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)级乐,“玉大人疙咸,你說(shuō)我怎么就攤上這事》缈疲” “怎么了撒轮?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)贼穆。 經(jīng)常有香客問(wèn)我题山,道長(zhǎng),這世上最難降的妖魔是什么故痊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任顶瞳,我火速辦了婚禮,結(jié)果婚禮上愕秫,老公的妹妹穿的比我還像新娘慨菱。我一直安慰自己,他們只是感情好戴甩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布符喝。 她就那樣靜靜地躺著,像睡著了一般等恐。 火紅的嫁衣襯著肌膚如雪洲劣。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天课蔬,我揣著相機(jī)與錄音囱稽,去河邊找鬼。 笑死二跋,一個(gè)胖子當(dāng)著我的面吹牛战惊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扎即,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吞获,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谚鄙?” 一聲冷哼從身側(cè)響起各拷,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闷营,沒(méi)想到半個(gè)月后烤黍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體知市,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年速蕊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫂丙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡规哲,死狀恐怖跟啤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唉锌,我是刑警寧澤隅肥,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站糊秆,受9級(jí)特大地震影響武福,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痘番,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一捉片、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汞舱,春花似錦伍纫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至泌神,卻和暖如春良漱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欢际。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工母市, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人损趋。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓患久,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親浑槽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒋失,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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