在平常開發中咱們可能會遇到須要自定義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來設置,也能夠添加約束.有興趣的同窗試試