思路
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;
}
}
}
}
}











网友评论