去掉UITableView多余的空白行分割線


一、問題描述

在學習和開發中經常會遇到下面的問題,UITableView的UITableViewCell很少或者沒有時,但UITableView有很多的空白行分割線。如下圖:

 

如何去掉UITableView多余的空白行分割線?

二、問題分析

方法一:隱藏UITableViewCell自帶的分割線,然后自定義分割線到UITableViewCell。自定義分割線的方法有很多種,可以自行查找。

方法二:很簡單,修改tableFooterView。創建frame為CGRectZero的UIView,賦值給tableFooterView

 

二、問題解決

1.自定義分割線

列舉自定義分割線的其中一種方法。

步驟一:全局設置UITableViewCell系統自帶分割線“隱藏”,這個“隱藏”只是把分割線顏色設置為透明。這樣做目的是為了保持自定義分割線frame和系統自帶的分割線一樣。如果不想一樣,可以真正隱藏。

1 -(void)viewDidLoad
2 {
3     //設置分割線的風格
4     self.tableViewCategory.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
5     self.tableViewCategory.separatorColor = [UIColor clearColor];
6     self.tableViewList.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
7     self.tableViewList.separatorColor = [UIColor clearColor];
8 }

 

步驟二:在UITableViewCell

 1 // 自繪分割線
 2 - (void)drawRect:(CGRect)rect
 3 {
 4     //獲取cell系統自帶的分割線,獲取分割線對象目的是為了保持自定義分割線frame和系統自帶的分割線一樣。如果不想一樣,可以忽略。
 5     UIView *separatorView = [self valueForKey:@"_separatorView"];
 6     NSLog(@"%@",NSStringFromCGRect(separatorView.frame));
 7     NSLog(@"%@",NSStringFromCGRect(rect));
 8     [super drawRect:rect];
 9     CGContextRef context = UIGraphicsGetCurrentContext();
10     CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:232/255.0 green:232/255.0 blue:232/255.0 alpha:1].CGColor);
11     //CGContextStrokeRect(context, CGRectMake(0, rect.size.height - 1, rect.size.width, 1));
12     CGContextStrokeRect(context, separatorView.frame);
13 }

 效果:

 

2.修改tableFooterView

1  self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM