對於ios7,ios8及以上來說,調整UITableView的cell的分割線位置已經是相當不便,因為UITableView內部使用了margin layout.
其實只需要如下這樣子就可以實現分割線的控制。
復制代碼 代碼如下:
-(void)tableView:(UITableView )tableView willDisplayCell:(UITableViewCell )cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
// 下面這幾行代碼是用來設置cell的上下行線的位置
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
//按照作者最後的意思還要加上下面這一段,才能做到底部線控制位置,所以這裡按stackflow上的做法添加上吧。
if([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]){
[cell setPreservesSuperviewLayoutMargins:NO];
}
}
如果要直接使用TableView的sectionTitle,但又想設置它的字體,顏色什麼的,可以使用如下方法。
復制代碼 代碼如下:
- (void)tableView:(UITableView )tableView willDisplayHeaderView:(UIView )view forSection:(NSInteger)section
{
// Background color
view.tintColor = [UIColor blueColor];
// Text Color
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
[header.textLabel setTextColor:[UIColor redColor]];
// 另一種方法設置背景顏色
// header.contentView.backgroundColor = [UIColor blackColor];
}
不顯示分割線
通過tableFooterView修改UITableView分割線:
在使用UITableView的時候,如果沒有數據/數據很少,會發現即使沒有數據的cell也會有分割線,這樣看起來並不美觀,通常我們希望只有顯示數據的cell會顯示對應的分割線,而不顯示數據的cell不顯示分割線。
常用的做法有兩種:
第一種做法是首先取消顯示分割線,然後自定義cell,在cell的最底部加上一個高度為1的view,這樣看起來就像是一條分割線。只有cell有數據顯示出來的時候才會顯示這個view,這樣就達到了目的。
第二種做法既不用取消顯示分割線,也不需要自定義cell,而是直接這樣做:
復制代碼 代碼如下:
self.tableView.tableFooterView = [[UIView alloc] init];
運行顯示結果,發現就已經達到了我們的目的。很明顯這種做法更方便。