iOS 中隱藏UITableView最後一條分隔線

如何優雅的隱藏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

相關文章
相關標籤/搜索