我试图进行聊天,我找到了使 tableView 看起来像您使用下面的代码行从下到上填充它的方法:
//Swipe the tableView
tableView.transform = CGAffineTransform(rotationAngle: (-.pi))
tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 0, tlView.bounds.size.width - 10)
//Swipe the cells
cell.transform = CGAffineTransform(rotationAngle: (-.pi))
效果很好,但是当您使用函数 TrailingSwipeActionsConfigurationForRowAt 应用操作时,就会出现问题,因为所有内容都显示颠倒,如下图所示。正如您所看到的“详细信息”按钮,它位于右侧(它必须位于左侧)并且它是颠倒的。
这是制作动作的函数,但是UIContextualAction没有transform函数,所以不能像tableview和cell一样旋转它。
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let answerAction = UIContextualAction(style: .normal, title: "Details", handler: { (ac:UIContextualAction, view:UIView, success: @escaping (Bool) -> Void) in
success(true)
})
answerAction.backgroundColor = UIColor.white.withAlphaComponent(0)
let configuration = UISwipeActionsConfiguration(actions: [answerAction])
configuration.performsFirstActionWithFullSwipe = true
return configuration
}
那么,我该如何旋转呢?或者还有什么其他方法可以让 tableView 从下到上填充?
非常感谢您的帮助!
这是(hacky)目标c解决方案:
-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath {
for (UIView *subview in tableView.subviews) {
if ([NSStringFromClass(subview.class) isEqualToString:@"_UITableViewCellSwipeContainerView"]) {
for (UIView *swipeContainerSubview in subview.subviews) {
if ([NSStringFromClass(swipeContainerSubview.class) isEqualToString:@"UISwipeActionPullView"]) {
for (UIView *buttonView in swipeContainerSubview.subviews) {
if ([NSStringFromClass(buttonView.class) isEqualToString:@"UISwipeActionStandardButton"]) {
UIButton *button = (UIButton*)buttonView;
CGAffineTransform rotate = CGAffineTransformRotate(button.transform, M_PI);
CGAffineTransform translate = CGAffineTransformMakeScale(-1.0, 1.0);
button.transform = CGAffineTransformConcat(translate, rotate);
}
}
}
}
}
}
}