iOS開發(fā) - UITableView 使用細(xì)節(jié)

隱藏多余的 cell

self.tableView.tableFooterView = [[UIView alloc] init];

分割線相關(guān)


// 去掉整個(gè) tableView 的分割線:
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

// 去掉某一個(gè)行 cell 的分割線:
cell.separatorInset = UIEdgeInsetsMake(0, ScreenWidth, 0, 0);

// 分割線頂?shù)筋^部
self.tableView.separatorInset = UIEdgeInsetsZero;
self.tableView.layoutMargins = UIEdgeInsetsZero;

// 分割線顏色
self.tableView.separatorColor = [UIColor redColor];

隱藏滾動(dòng)條

// 垂直方向
self.tableView.showsVerticalScrollIndicator = NO;

// 豎直方向
self.tableView.showsHorizontalScrollIndicator = NO;

cell點(diǎn)擊效果

// 點(diǎn)擊無(wú)樣式
cell.selectionStyle = UITableViewCellSelectionStyleNone;

// 自定義點(diǎn)擊樣式 - view
cell.selectedBackgroundView = [[UIView alloc] init];
cell.selectedBackgroundView.backgroundColor = [UIColor yellowColor];

// 自定義點(diǎn)擊樣式 - image
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"xxx"]];

// 右邊輔助按鈕樣式
cell.accessoryType = UITableViewCellAccessoryDetailButton;

// 類似 button 點(diǎn)擊閃爍效果
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

TableView 自動(dòng)布局

// TableviewCell 使用SB約束好, 根據(jù)大小自動(dòng)布局
// 使用SB布局的Cell ,直接使用下面代碼達(dá)到自動(dòng)布局目的
self.tableView.estimatedRowHeight = 44;
self.tableView.rowHeight = UITableViewAutomaticDimension;

自定義分區(qū)頭

注意:自定義分區(qū)頭,tableView 的樣式使用Plain就可以。

  1. 自定義視圖,繼承自UITableViewHeaderFooterView
  2. 設(shè)置headerView 的行高:
self.orderTableView.sectionHeaderHeight = 42;
  1. 注冊(cè) headerView:
[self.tablView registerNib:[UINib nibWithNibName:NSStringFromClass([CustomHeaderView class]) bundle:nil] forHeaderFooterViewReuseIdentifier:@"header"];
  1. 實(shí)現(xiàn)代理方法:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    CustomHeaderView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"header"];
    headerView.titleL.text = self.orders[section][@"date"];
    return headerView;
}

獲取 TableView 的可視區(qū)域


// 方式一
// 直接返回一個(gè) UITableViewCell 的數(shù)組,對(duì)于自定義 cell 處理起來(lái)比較繁瑣
self.tableView.visibleCells;

// 方式二
// 返回一個(gè) NSIndexPath 的數(shù)組,可以使用 indexPath.row 去獲取數(shù)據(jù)、獲取 cell
self.tableView.indexPathsForVisibleRows;

// 方式三
// 改方法可使用在代理回調(diào)比較多的設(shè)計(jì)中
NSIndexPath *index = [[NSIndexPath alloc] init];
CGRect cellR = [self.tableView rectForRowAtIndexPath:index];
if ((self.tableView.contentOffset.y - cellR.origin.y) < self.tableView.lc_height ||
(cellR.origin.y - self.tableView.contentOffset.y) > self.tableView.lc_height) {
    NSLog(@"此時(shí)的 cell不在 tableview 的可視區(qū)域來(lái)了");
}

// 注意:1和2 在自動(dòng)根據(jù)數(shù)據(jù)伸長(zhǎng)的 cell 好像不太好用。

禁止分區(qū)頭跟隨 TableView 滾動(dòng)

// 滾動(dòng)視圖代理
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView == self.tableView) {
        CGFloat headerHeight = 42;
        if ((scrollView.contentOffset.y <= headerHeight) && (scrollView.contentOffset.y >= 0)) {
            scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
        } else if (scrollView.contentOffset.y >= headerHeight) {
            scrollView.contentInset = UIEdgeInsetsMake(-headerHeight, 0, 0, 0);
        }
    }
}

程序不執(zhí)行代理方法

當(dāng)網(wǎng)絡(luò)請(qǐng)求后,設(shè)置reloadData來(lái)刷新表格時(shí),有時(shí)會(huì)不執(zhí)行代理方法。

如果設(shè)置-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView代理方法,并且返回值是根據(jù)請(qǐng)求結(jié)果來(lái)設(shè)置分區(qū)個(gè)數(shù)的話,數(shù)值有可能為0。

原因:

當(dāng)返回的分區(qū)頭個(gè)數(shù)0時(shí),tableView 的其他代理方法都不會(huì)執(zhí)行。
開發(fā)中要注意:分區(qū)個(gè)數(shù)為0的情況。


GitHub: https://github.com/LiCheng244/LCUtils
個(gè)人博客: http://www.licheng244.com/


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,106評(píng)論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,441評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,211評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,736評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,475評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,834評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,009評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,559評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,516評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,728評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,132評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,443評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,249評(píng)論 3 399
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,484評(píng)論 2 379

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

  • 一、簡(jiǎn)介 <<UITableView(或簡(jiǎn)單地說,表視圖)的一個(gè)實(shí)例是用于顯示和編輯分層列出的信息的一種手段 <<...
    無(wú)邪8閱讀 10,658評(píng)論 3 3
  • 版權(quán)聲明:未經(jīng)本人允許,禁止轉(zhuǎn)載. 1. TableView初始化 1.UITableView有兩種風(fēng)格:UITa...
    蕭雪痕閱讀 2,911評(píng)論 2 10
  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AGI閱讀 16,003評(píng)論 3 119
  • 題記:我人生中犯下的最大錯(cuò)誤都起源于把我的力量拱手送人——相信別人給予的愛比我給自己的愛更重要。 ——《我堅(jiān)信》 ...
    傾城你好閱讀 2,551評(píng)論 0 3
  • 周圍的小伙伴兒好像都挺忙的,忙著找工作,找對(duì)象,找賺錢的門路。 物質(zhì)資料日漸豐富的當(dāng)下,我們對(duì)金錢利益的追...
    暮鼓晨鐘安之若素閱讀 387評(píng)論 0 0