设备轮换后iOS 11中的UITableViewCell操作被破坏

我使用标准的UITableView和UITableViewRowAction类。 在设备轮换后的iOS 11中我有奇怪的行为,这里是示例:

屏幕投射

基本上,它打破了表格视图。 在更复杂的细胞和表格的真实应用程序中它更糟糕(重叠细胞等)我已经尝试在旋转后调用UITableView上的SetNeedsDisplay(),但没有帮助。

在iOS 10中,操作看起来略有不同,并且工作完美。

一些评论提到了这一点,但明显的赢家是取消在轮换时编辑单元格:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [self.tableView setEditing:NO animated:NO]; } 

Swift版本:

您可以重置单元格的编辑状态,以便在viewWillTransition(to:with:)使用setEditing(_:animated:)不再显示操作,该设置在旋转时调用。

 override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) tableView.setEditing(false, animated: true) } 

这仅在您在协调器的animate方法之外调用setEditing(_:animated:)时才有效。 在animation块内将编辑设置为false将不起作用。