加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iOS11中另类自定义UITableViewCell删除按钮的外观

发布时间:2020-12-15 02:03:49 所属栏目:百科 来源:网络整理
导读:iOS不同版本中对于TableView行的删除按钮的实现内部是不一样的,甚至传说不同Xcode版本编译出来的App里也是不一样的: iOS 8 - 10 : UITableView - UITableViewCell - UITableViewCellDeleteConfirmationView - _UITableViewCellActionButtoniOS 11 (Xcode 8

iOS不同版本中对于TableView行的删除按钮的实现内部是不一样的,甚至传说不同Xcode版本编译出来的App里也是不一样的:

iOS 8-10: UITableView -> UITableViewCell -> UITableViewCellDeleteConfirmationView -> _UITableViewCellActionButton

iOS 11 (Xcode 8编译): UITableView -> UITableViewWrapperView -> UISwipeActionPullView -> UISwipeActionStandardButton

iOS 11 (Xcode 9编译): UITableView -> UISwipeActionPullView -> UISwipeActionStandardButton

原链接:https://www.jianshu.com/p/779f36c21632

我没有尝试在Xcode 8里编译iOS11的App,不过对于iOS旧版本和Xcode 9.3下的iOS11来说,作者说的是正确的.

我们知道修改删除按钮一般无外乎更换下背景,字体等东东,不过这里我们索性变得尺度更大一点.

以下开发环境为Xcode 9.3 + iOS 11

因为TableView行高度较大,所以如果删除按钮不做调整就会非常丑:

So我们需要把它变得很好看一些,于是我们首先需要锁定删除按钮的位置.注意,我们不能用以下的方法:

- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath - (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath

因为它们达不到要求.

以下代码只是简单的示例,并不能作为产品代码来用,因为没有考虑其他条件:

override func layoutSubviews() {
        super.layoutSubviews()

        for subView in subviews{
            if subView.isKind(of: NSClassFromString("UISwipeActionPullView")!){

                if subView.frame.width == 0 {isFixed = false;return}
                if isFixed {return}

                subView.frame = subView.frame.insetBy(dx: 0,dy: 85.5)
                subView.layer.cornerRadius = 74/2.0
                subView.layer.masksToBounds = true
                subView.layer.borderWidth = 5.0
                subView.layer.borderColor = UIColor.black.withAlphaComponent(0.5).cgColor
                isFixed = true
            }
        }
    }

如上所示,我们首先找到删除按钮本身,然后修改其位置,大小以及形状,运行App效果如下:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读