黑暗料理一之修改UITableViewCell左滑刪除按鈕的樣式和自定義


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

可能你說不能修改,萬是不是絕對的,我們有神器reveal,作為一名iOS程序猿,如果你連reveal都不知道或不會用的話你就太low了,OK,我們開始我們的黑暗料理.

首先我們來看reveal下UITableViewCell左滑按鈕的層級關系,

 

我們來看下這是cell左滑狀態下的層級關系

1,cell有兩個subView,一個是UITableViewCellDeleteConfirmationView,這個類我們在xcode中是打不出來也找不出來的,所以大家就別找了

另一個是cell的contentView,這個就是我們常用的cell.contentView,這個就不用說了大家都知道,

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

大家看到_UITableViewCellActionButton這個類別擔心,我們不用管它,我們把他看做UIButton就行了,當做button那就好辦了,想怎么改就怎么改,那么我們怎么拿到這個按鈕呢,且看下面黑暗料理

 

-(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; } } } } }

遍歷子控件就找到了

然后想怎么改就怎么改,

這段代碼我們要在

layoutSubviews里調用,才能遍歷出來

這個

UITableViewCellDeleteConfirmationView的寬度我們怎么控制呢,

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

在tableView的這個代理里面控制,然后在cell內部控制我們按鈕要顯示的title,也可以設置image,也可以把它給remove調,添加我們自己定義的view啊什么的,

刪除按鈕是添加在

UITableViewCellDeleteConfirmationView 這個類對應的view上面的,所以大家添加的時候也添加到他上面,布局大小就按他的frame來設置,也可以添加約束.有興趣的同學試試



好了今天的黑暗料理就結束了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM