我试图使一个自定义的滑动删除风格,似乎是后面的细胞本身,而不是并排像默认trailingSwipeActionsConfiguration。就像这样:
有没有什么方法可以创造出这样的设计呢?从我尝试过的默认滑动控制,将有一个细胞本身和删除按钮之间的差距,由于细胞填补下拉阴影,也是红色的删除按钮需要扩大下圆角的细胞。我还尝试在调用tableview willBeginEditingRowAt时在单元格后面创建一个子视图,但它似乎关闭了(有时有效,有时无效)。也许有一个合适的方法来实现这一点。
k2arahey1#
我希望我不会太晚)为此,您需要为action元素设置自定义视图。一种不太复杂的方法是在单元格的主视图下方添加另一个红色视图,并通过自定义滑动简单地设置新的平移。对于此视图,可以使用
tableView.subviews.forEach { view in view.layer.shadow .... }
另一种方法是为action元素创建掩码。
func configureMaskFor(size: CGSize) -> CAShapeLayer{ let cornerRadius: CGFloat = 9 let bezierPath = UIBezierPath() let startPoint = CGPoint(x: 0, y: 0) bezierPath.move(to: startPoint) let point1 = CGPoint(x: size.width - cornerRadius, y: 0) bezierPath.addLine(to: point1) bezierPath.addArc(withCenter: CGPoint(x: point1.x, y: cornerRadius), radius: cornerRadius, startAngle: CGFloat(Double.pi / 2 * 3), endAngle: 0, clockwise: true) let point2 = CGPoint(x: size.width, y: size.height - cornerRadius) bezierPath.addLine(to: point2) bezierPath.addArc(withCenter: CGPoint(x: point1.x, y: point2.y), radius: cornerRadius, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: true) let point3 = CGPoint(x: 0, y: size.height) bezierPath.addLine(to: point3) bezierPath.addArc(withCenter: CGPoint(x: point3.x, y: point3.y - cornerRadius), radius: cornerRadius, startAngle: CGFloat.pi / 2 , endAngle: 0, clockwise: false) let point4 = CGPoint(x: cornerRadius, y: cornerRadius) bezierPath.addLine(to: point4) bezierPath.addArc(withCenter: CGPoint(x: 0, y: cornerRadius), radius: cornerRadius, startAngle: 0, endAngle: CGFloat.pi / 2 * 3 , clockwise: false) bezierPath.close() let shapeLayer = CAShapeLayer() shapeLayer.path = bezierPath.cgPath return shapeLayer }
然后在layoutSubviews()中添加遮罩。
view.layer.mask = configureMaskFor(size: CGSize(width: contentView.frame.width * 0.2 , height: contentView.frame.height))
1条答案
按热度按时间k2arahey1#
我希望我不会太晚)
为此,您需要为action元素设置自定义视图。
一种不太复杂的方法是在单元格的主视图下方添加另一个红色视图,并通过自定义滑动简单地设置新的平移。对于此视图,可以使用
另一种方法是为action元素创建掩码。
然后在layoutSubviews()中添加遮罩。