開發中,我們經常需要定制tableView,其中tableView中cell的分割線,系統默認的是分割線與左側沒有頂滿,右側頂滿了,這樣不符合定制的要求;
UITableViewDelegate
/** 設置tableview的分割線的顯示*/
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsMake(0, 15, 0, 15)];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsMake(0, 15, 0, 15)];
}
}
可能有一個疑問,為甚么設置一個分割線的長度,需要這兩個方法,這兩個方法不是都是設置長度嗎?一個不行嗎?這個問題,我們可以從Apple的源碼中找到答案,我們按住option鍵,鼠標點擊方法名稱,就可以跳轉到apple源碼聲明中。
我們可以看到NS_AVAILABLE_IOS(8_0)和NS_AVAILABLE_IOS(7_0)
/** NS_AVAILABLE_IOS(8_0),這個方法可以在iOS8.0及以后的版本中使用,如果在比8.0更老的版本中調用這個方法,就會引起崩潰。*/
所以,個人理解是同時使用兩個方法是為了適配不同的系統。