美文网首页
iOS11 UISwipeActionPullView:UITa

iOS11 UISwipeActionPullView:UITa

作者: 歌手的剑 | 来源:发表于2018-01-15 12:29 被阅读737次

    iOS11,UITableViewCell左滑之后在cell的layoutSubViews中已经拿不到『UITableViewCellDeleteConfirmationView』,这时咱们可以通过以下方法来实现需求:

    1、通过查看视图层级发现

    UISwipeActionPullView

    TableView中出了这个『UISwipeActionPullView』

    2、在tableView的代理方法『willbeginEditing』中调用setNeedsLayout,使当前控制器的『viewWillLayoutSubviews』方法被调用(这一步必不可少,否则viewWillLayoutSubviews不会执行的)

    setNeedsLayout

    3、关键代码:

    获取UISwipeActionPullView
    1,2两种方式是OC中常用的class判断的方式,楼主在这里耽误了一点时间
    经尝试后发现 :3,4两种方式可以完美的达到咱们的目的。
    

    4、关键代码:

    UISwipeActionPullView的视图层级
    修改UISwipeActionStandardButton

    5、修改完成:

    修改完成!

    6、iOS11以下的做法(可以在cell的layoutSubViews中,也可以在当前VC中,这里写的是第二种):

    巧妙地在Indexpath初始化时,使row = -1 ,editIndexPath用来获取被编辑的cell

    7、完整代码

    完整代码

    8、CodeClean

        override func viewWillLayoutSubviews() {
            super.viewWillLayoutSubviews()
            if editIndexPath.row < 0 { return }
            
            let cell = tableview.cellForRow(at: editIndexPath)
            let sup = UIDevice.current.systemVersion >= "11" ? tableview : cell!
            let swipeStr = UIDevice.current.systemVersion >= "11" ? "UISwipeActionPullView" : "UITableViewCellDeleteConfirmationView"
            let actionStr = UIDevice.current.systemVersion >= "11" ? "UISwipeActionStandardButton" : "_UITableViewCellActionButton"
            
            for subview in sup.subviews {
                if String(describing: subview).range(of: swipeStr) != nil {
                    for sub in subview.subviews {
                        if String(describing: sub).range(of: actionStr) != nil {
                            if let button = sub as? UIButton {
                                button.backgroundColor = .black
                            }
                        }
                    }
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:iOS11 UISwipeActionPullView:UITa

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