如何優雅的隱藏UITableView中最後一條分割線?git
這個問題是很常見,卻又不太容易解決的。github
可能一般的作法都是隱藏UITableView的分割線,自定義一條。bash
最近在使用彈出菜單的時候,一樣遇到了這個問題。微信
需求場景,作一個相似微信公衆號,底部菜單彈出的菜單視圖。 而這樣的菜單中的tableView通常
contentSize
等於其frame.size
,而且tableView的scrollEnabled
爲NO。測試
我想了一種方法(建立一個高度爲1px的UIView,蓋住tableView的底部1px):spa
UIView *lineView = [self viewWithTag:201];
if (!lineView) {
lineView = [[UIView alloc] initWithFrame:CGRectZero];
}
lineView.frame = CGRectMake(5, menuRect.size.height-2, menuRect.size.width - 10, 2);
lineView.tag = 201;
lineView.backgroundColor = [FTPopOverMenuConfiguration defaultConfiguration].tintColor;
[self insertSubview:lineView aboveSubview:self.menuTableView];
複製代碼
然而,做者給出了一個很優雅的作法,只須要添加幾行代碼便可,關鍵代碼以下:code
if (indexPath.row == _menuStringArray.count-1) {
menuCell.separatorInset = UIEdgeInsetsMake(0, self.bounds.size.width, 0, 0);
}else{
menuCell.separatorInset = UIEdgeInsetsMake(0, FTDefaultMenuTextMargin, 0, 10+FTDefaultMenuTextMargin);
}
複製代碼
咱們只須要在CellForRow
方法中判斷是最後一個cell,而後將分割線偏移出屏幕外便可。get
注意: 通過測試,上面這種設置cell的
separatorInset
,來讓最後一條分割線不顯示出來的作法, 對自定義的Cell有效; 對於UITableViewCell,修改了separatorInset
,會致使textLabel也隨着偏移。it