美文网首页
UITableViewCell 编辑状态修改系统红色删除按钮图片

UITableViewCell 编辑状态修改系统红色删除按钮图片

作者: 嗯哎嘶唠咯 | 来源:发表于2018-05-08 23:13 被阅读42次

    问题

    今天尝试修改系统的编辑样式达到UI设计师们要的效果:


    最终效果 而系统自带的删除按钮是红色实心儿的: 系统删除按钮

    处理过程

    想都不带想的,修改系统删除按钮的图片就行了,需要实现layoutSubviews方法:

    - (void)layoutSubviews
    {
        for (UIControl *control in self.subviews){
            if ([control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){
                for (UIView *v in [[control.subviews reverseObjectEnumerator] allObjects])
                {
                    if ([v isKindOfClass: [UIImageView class]]) {
                        UIImageView *img=(UIImageView *)v;
                        img.image = [UIImage imageNamed:@"login_icon_click_account_change_delete_minus"];
                        img.backgroundColor = [UIColor whiteColor];
                    }
                    break;
                }
            }
        }
        [super layoutSubviews];
    }
    

    洋洋洒洒数行代码,顺手command + R,准备欣赏自己的实现,but,重点来了:


    QQ20180508-223038.gif

    黑人问号脸!!!what ?! 还有这等骚操作的么?我的白底儿图片怎么又变成红色实心儿的图片了?

    继续跟程序正面刚🛠,在点击左侧删除按钮的时候,会走这个方法,所以我在此处打了个断点

    - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return @"删除";
    }
    
    看到了函数调用栈: 调用栈

    此处,红色直线标记出来的方法引起了我的注意:editControlWasClicked系统怕是在这个方法里面做了某些骚操作啊。

    思考再三,只有最后一种办法了,只能在editControlWasClicked之后调用的- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath方法里面重新让cell布局一次了:

    - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        HsAccountTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        [cell setNeedsLayout];
        return @"删除";
    }
    
    

    结果

    想要的效果确实是实现了,但还是觉得布局cell 的时机 和 方式都有些欠妥,若有幸被大佬看到并且有更好的方法,请一定告知,O(∩_∩)O谢谢!

    相关文章

      网友评论

          本文标题:UITableViewCell 编辑状态修改系统红色删除按钮图片

          本文链接:https://www.haomeiwen.com/subject/zdrgrftx.html