iOS 實(shí)現(xiàn)左滑自定義刪除按鈕

如圖:

直接拷貝以下內(nèi)容修改自己的圖片以及cell即可

//MARK: 設(shè)置左滑按鈕的樣式

- (void)setupSlideBtnWithEditingIndexPath:(NSIndexPath *)editingIndexPath {

? ? // 判斷系統(tǒng)是否是 iOS13 及以上版本

? ? if(@available(iOS 13.0, *)) {

? ? ? ? for(UIView*subViewinself.tableView.subviews) {

? ? ? ? ? ? if([subViewisKindOfClass:NSClassFromString(@"_UITableViewCellSwipeContainerView")] && [subView.subviewscount] >= 1) {

? ? ? ? ? ? ? ? // 修改圖片

? ? ? ? ? ? ? ? UIView*remarkContentView = subView.subviews.firstObject;

? ? ? ? ? ? ? ? [selfsetupRowActionView:remarkContentView];

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return;

? ? }


? ? // 判斷系統(tǒng)是否是 iOS11 及以上版本

? ? if(@available(iOS 11.0, *)) {

? ? ? ? for(UIView*subViewinself.tableView.subviews) {

? ? ? ? ? ? if([subViewisKindOfClass:NSClassFromString(@"UISwipeActionPullView")] && [subView.subviewscount] >= 1) {

? ? ? ? ? ? ? ? // 修改圖片

? ? ? ? ? ? ? ? UIView*remarkContentView = subView;

? ? ? ? ? ? ? ? [selfsetupRowActionView:remarkContentView];

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return;

? ? }


? ? // iOS11 以下的版本

? ? setTimeViewCell *cell = [self.tableView cellForRowAtIndexPath:editingIndexPath];


? ? for(UIView*subViewincell.subviews) {

? ? ? ? if([subViewisKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")] && [subView.subviewscount] >= 1) {

? ? ? ? ? ? // 修改圖片

? ? ? ? ? ? UIView*remarkContentView = subView;

? ? ? ? ? ? [selfsetupRowActionView:remarkContentView];

? ? ? ? }

? ? }

}

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{

? ? dispatch_async(dispatch_get_main_queue(), ^{

? ? ? ? ? [self setupSlideBtnWithEditingIndexPath:indexPath];

? ? ? });

}

- (NSArray*)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{

? ? //title不設(shè)為nil 而是空字符串 理由為啥 ?? 自己實(shí)踐 跑到ios11以下的機(jī)器上就知道為啥了

? ? UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"? ? ? ? " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){

? ? ? ? NSLog(@"哈哈哈哈");

? ? ? ? [tableViewsetEditing:NOanimated:YES];? // 這句很重要,退出編輯模式,隱藏左滑菜單

? ? }];

? ? return@[deleteAction];

}

- (void)setupRowActionView:(UIView*)rowActionView {

? ? // 切割圓角

//? ? [rowActionView cl_setCornerAllRadiusWithRadiu:20];

? ? // 改變父 View 的frame,這句話是因?yàn)槲以?contentView 里加了另一個(gè) View,為了使劃出的按鈕能與其達(dá)到同一高度

? ? CGRectframe = rowActionView.frame;

? ? frame.origin.y+= (7);

? ? frame.size.height-= (13);

? ? rowActionView.frame= frame;

? ? // 拿到按鈕,設(shè)置

? ? UIButton*button = rowActionView.subviews.firstObject;

? ? [buttonsetImage:[UIImage imageNamed:@"刪除 (1)"]? forState:UIControlStateNormal];

? ? [buttonsetTitle:@"" forState:UIControlStateNormal];

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容