separator style
UITableView 中的 separator 有三種類型:
typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
UITableViewCellSeparatorStyleNone, // 沒有分割線
UITableViewCellSeparatorStyleSingleLine, // 單線,默認(rèn)
UITableViewCellSeparatorStyleSingleLineEtched // 內(nèi)嵌線,只有在 UITableView 為 group 類型時才起作用
}
通過修改 UITableView 的 separatorStyle 屬性修改 separator 的類型,通過修改 separatorColor 屬性修改 separator 的顏色,通過修改 separatorEffect( iOS 8.0 之后) 屬性修改 separator 的顯示特效。
separator inset
修改 separator 到邊緣距離的時候,只需要修改 UITableView 的 separatorInset 屬性就可以了,例如,當(dāng)使用 xib 或 storyBoard 定制 cell 的時候,修改 tableview 的 Separator Inset 為 Custom,然后修改左右邊距。但是最近突然發(fā)現(xiàn)這樣完全不起作用了,即使手動修改 separatorInset 為 UIEdgeInsetsZero 也不起作用,具體什么原因沒有細(xì)究,然后通過萬能的百度,找到了解決方法:
方法一:
- (void)viewDidLoad {
[super viewDidLoad];
...
...
...
#pragma mark - a 調(diào)整view邊距
// 1.調(diào)整(iOS7以上)表格分隔線邊距
if ([self.MyTableView respondsToSelector:@selector(setSeparatorInset:)]) {
self.MyTableView.separatorInset = UIEdgeInsetsZero;
}
// 2.調(diào)整(iOS8以上)view邊距(或者在cell中設(shè)置preservesSuperviewLayoutMargins,二者等效)
if ([self.MyTableView respondsToSelector:@selector(setLayoutMargins:)]) {
self.MyTableView.layoutMargins = UIEdgeInsetsZero;
}
}
#pragma mark - b 調(diào)整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 調(diào)整view邊距
//1.調(diào)整(iOS8以上)tableView邊距(與上面第2步等效,二選一即可)
if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
cell.preservesSuperviewLayoutMargins = NO;
}
//2.調(diào)整(iOS8以上)view邊距
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
return cell;
}
#pragma mark - b 調(diào)整view邊距
//然后在willDisplayCell方法中加入如下代碼:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
#pragma mark - b
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
}