iOS開發(fā)之TableView實現完整的分割線詳解
前言
在我們創(chuàng)建一個tableView的時候,細心的你有沒有發(fā)現UITableViewCell左側會有空白。而我們在開發(fā)中有這樣的需求: 需要一根完整的分割線(去掉煩人的空白部分, 即分割線的寬度 == 屏幕的寬度)。
那么下面我就講一講該如何去掉空白的部分,顯示完整的分割線。
這里我提供兩種方法 :
第一種方法,也是我們最常用的方法,也是在我們自定義cell的時候所用到的. 即去掉tableView默認的分割線,自定義cell,重寫setFrame: 方法即可
下面是具體代碼實現:
步驟一 : 移除系統默認的分割線
// 設置分割線的樣式為None. self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView有個separatorStyle屬性, 即分割線的樣式.這是一個枚舉類型. 我們按著command點擊它進入他的屬性中會發(fā)現如下代碼:
typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) { UITableViewCellSeparatorStyleNone, //不顯示分割線 UITableViewCellSeparatorStyleSingleLine,// 單線 UITableViewCellSeparatorStyleSingleLineEtched // 這種分離式僅支持分組樣式表視圖 // This separator style is only supported for grouped style table views currently }
步驟二 : 重寫setFrame: 方法
注意重寫setFrame: 方法是需要我們寫在UITableViewCell中的, 上面也說過,這種方法適用于自定義cell.
下面是代碼:
- (void)setFrame:(CGRect)frame { frame.origin.y += 1; // 讓cell的y值增加1(根據自己需要分割線的高度來進行調整) frame.size.height -= 1; // 讓cell的高度減1 [super setFrame:frame]; // 別忘了重寫父類方法 }
通過上面兩個步驟,就會去掉系統默認的分割線,生成我們自己的分割線. 這種方法是不是很簡單呢? 如果需要自定義分割線的顏色,只需要設置`separatorColor`為你需要的顏色就可以啦.
第二種方法也很簡單,此方法不需要我們自定義cell,使用默認的tableViewcell也可以成功.這里需要說明說的是:
ios7中,UITableViewCell左側會有默認15像素的空白.設置setSeparatorInset:UIEdgeInsetsZero
能將空白去掉.
ios8中,setSeparatorInset:UIEdgeInsetsZero
的設置已經不起作用了.
下面是解決辦法,首先在viewDidLoad方法加入以下代碼:
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { // 如果tableView響應了setSeparatorInset: 這個方法,我們就將tableView分割線的內邊距設為0. [self.tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { // 如果tableView響應了setLayoutMargins: 這個方法,我們就將tableView分割線的間距距設為0. [self.tableView setLayoutMargins:UIEdgeInsetsZero]; }
然后在UITableView的代理方法中加入以下代碼
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // 這兩句的含義跟上面兩句代碼相同,就不做解釋了 if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } }
總結
以上就是這篇文章的全部內容了,通過上述兩個步驟也可以實現讓cell 的分割線完整的顯示出來. 小伙伴們,趕緊試試吧. 如果有什么更好的辦法,或者是其他的思路可以留言交流。 同時非常歡迎提出寶貴的意見.希望本文的內容對大家的學習或者工作能帶來一定的幫助。
相關文章
ios 不支持 iframe 的完美解決方法(兼容iOS&安卓)
下面小編就為大家?guī)硪黄猧os 不支持 iframe 的完美解決方法(兼容iOS&安卓)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07IOS開發(fā)之tableView點擊行跳轉并帶有“顯示”更多功能
這篇文章給大家介紹通過點擊城市中的tableView跳轉到旅游景點的tableView,下面會有“顯示”更多的功能,代碼簡單易懂,對ios點擊tableview跳轉相關知識感興趣的朋友一起學習吧2016-03-03詳解iOS應用的設計模式開發(fā)中Mediator中介者模式的使用
這篇文章主要介紹了iOS應用的設計模式開發(fā)中Mediator中介者模式的使用,示例代碼為傳統的Objective-C語言,需要的朋友可以參考下2016-03-03