1. 程式人生 > >iOS-修改TableView分割線樣式

iOS-修改TableView分割線樣式

樣式一:原始分割線(左邊不到螢幕左邊緣)

    _MyTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

<code>這裡寫圖片描述</code>
三種結構體樣式:
/**
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個畫素即可實現;
同樣的樣式,我們可以通過很多種方法去實現,我這裡只是列舉了個別幾種,歡迎大家補充,謝謝。