iOS-修改TableView分割線樣式
阿新 • • 發佈:2018-12-24
樣式一:原始分割線(左邊不到螢幕左邊緣)
_MyTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
三種結構體樣式:
/**
UITableViewCellSeparatorStyleNone, 沒有分割線
UITableViewCellSeparatorStyleSingleLine, 單線(預設)
UITableViewCellSeparatorStyleSingleLineEtched 內嵌線
*/
樣式二:分割線到螢幕邊緣
方法一:
- (void)viewDidLoad {
[super viewDidLoad];
...
...
...
#pragma mark - a 調整view邊距
// 1.調整(iOS7以上)表格分隔線邊距
if ([self.MyTableView respondsToSelector:@selector(setSeparatorInset:)]) {
self.MyTableView.separatorInset = UIEdgeInsetsZero;
}
// 2.調整(iOS8以上)view邊距(或者在cell中設定preservesSuperviewLayoutMargins,二者等效)
if ([self.MyTableView respondsToSelector:@selector(setLayoutMargins:)]) {
self.MyTableView.layoutMargins = UIEdgeInsetsZero;
}
}
#pragma mark - b 調整view邊距
//然後在willDisplayCell方法中加入如下程式碼:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
#pragma mark - b
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
方法二:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
...
...
...
#pragma mark - a 調整view邊距
//1.調整(iOS8以上)tableView邊距(與上面第2步等效,二選一即可)
if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
cell.preservesSuperviewLayoutMargins = NO;
}
//2.調整(iOS8以上)view邊距
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
return cell;
}
#pragma mark - b 調整view邊距
//然後在willDisplayCell方法中加入如下程式碼:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
#pragma mark - b
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
}
總結:系統自帶的cell的分割線,滿足我們大部分的需求,但在有些情況下,我們需要使用樣式二中得cell的分割線樣式。
同時,我們也可以自定義cell的分割線。通過1個畫素寬的圖片或者view新增到cell中;
或者設定背景圖片為灰色,同時設定cell之間的間距為1個畫素即可實現;
同樣的樣式,我們可以通過很多種方法去實現,我這裡只是列舉了個別幾種,歡迎大家補充,謝謝。