美文网首页
iOS13 修改左滑删除按钮Frame

iOS13 修改左滑删除按钮Frame

作者: 生命不止运动不息 | 来源:发表于2021-01-24 08:43 被阅读0次

思路

1.找到删除按钮,修改frame
2.什么时候才能找到,在哪才能找到删除按钮呢?
一般答案:layoutSubviews。 确实可以找到。但是有个问题,就是修改Frame延迟,会有个隐式动画过渡效果,看着难受。

最终方案:在三个地方修改,layoutSubviews, setEditing, willTransitiion。
关于这3个函数的作用,大家自行看文档哈。

上代码:以下代码放在cell中。复制即可使用,记得自行修改frame
 override func layoutSubviews() {
        super.layoutSubviews()
        
        self.changeDeleteFrame()
    }
    
    override func willTransition(to state: UITableViewCell.StateMask) {
        super.willTransition(to: state)
        
        if state.contains(.showingDeleteConfirmation) {
            self.changeDeleteFrame()
        }
    }
    
    override func setEditing(_ editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: animated)
        
        if editing {            
            self.changeDeleteFrame()   
         }
    }
    
    func changeDeleteFrame() {
        ///修改左滑删除按钮的frame
        if let su = self.superview {
            let cls = NSStringFromClass(su.classForCoder)
            if cls.contains("_UITableViewCellSwipeContainerView") {
                for v in su.subviews {
                    let clsName = NSStringFromClass(v.classForCoder)
                    if clsName.contains("UISwipeActionPullView") {
                        
                        //修改左滑删除视图的frame
                        var fr = v.frame
                        fr.size.height = 44.0
                        fr.origin.y = 5
                        v.frame = fr;
                        
                        return;
                    }
                }
            }
        }
    }

相关文章

网友评论

      本文标题:iOS13 修改左滑删除按钮Frame

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