修改TableViewCell系統自帶的左滑刪除按鈕的樣式

在平常開發中咱們可能會遇到須要自定義UITableViewCell左滑刪除按鈕的樣式,網上也有許多自定義的第三方,可是都過重量級了,應爲咱們可能咱們的需求很小,也不想大動干戈的導入一個第三方,而後設置各類一大堆屬性,太麻煩了,那麼怎麼來修改系統自帶的呢?xcode

可能你說不能修改,萬是否是絕對的,咱們有神器reveal,做爲一名iOS程序猿,若是你連reveal都不知道或不會用的話你就太low了,OK,咱們開始咱們的黑暗料理.佈局

首先咱們來看reveal下UITableViewCell左滑按鈕的層級關係,代理

 

咱們來看下這是cell左滑狀態下的層級關係code

1,cell有兩個subView,一個是UITableViewCellDeleteConfirmationView,這個類咱們在xcode中是打不出來也找不出來的,因此你們就別找了開發

另外一個是cell的contentView,這個就是咱們經常使用的cell.contentView,這個就不用說了你們都知道,rem

咱們來分析UITableViewCellDeleteConfirmationView,他是一個view,他的子空間就是咱們要找的刪除按鈕,it

你們看到_UITableViewCellActionButton這個類別擔憂,咱們不用管它,咱們把他看作UIButton就好了,當作button那就好辦了,想怎麼改就怎麼改,那麼咱們怎麼拿到這個按鈕呢,且看下面黑暗料理io

 

複製代碼

-(void)modifiDeleteBtn{
    for (UIView *subView in self.subviews) {
        if ([subView isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")]) {
            subView.backgroundColor=kColorBlue;
            for (UIButton *btn in subView.subviews) {
                if ([btn isKindOfClass:[UIButton class]]) {
                    btn.backgroundColor=kColorBlue;
                }
            }
        }
    }
}

複製代碼

遍歷子控件就找到了table

而後想怎麼改就怎麼改,class

這段代碼咱們要在

layoutSubviews裏調用,才能遍歷出來

這個

UITableViewCellDeleteConfirmationView的寬度咱們怎麼控制呢,

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
    return @"刪除哈哈哈哈哈";
}

在tableView的這個代理裏面控制,而後在cell內部控制咱們按鈕要顯示的title,也能夠設置image,也能夠把它給remove調,添加咱們本身定義的view啊什麼的,

刪除按鈕是添加在

UITableViewCellDeleteConfirmationView 這個類對應的view上面的,因此你們添加的時候也添加到他上面,佈局大小就按他的frame來設置,也能夠添加約束.有興趣的同窗試試
相關文章
相關標籤/搜索