Can*_*ğlu 5 uitableview ios ios9 3dtouch peek-pop
我有一个聊天应用程序,我使用倒置表视图技术(表视图使用转换缩放到(1,-1),并且所有单元格本身也缩放到(1,-1),中和效果,从而有效地反转表视图以显示底部的"第一个"单元格,从底部"开始"表格视图.一切都很好,除了我需要实现偷看和弹出手势.我已将表格视图单元格中的一个按钮连接到目标视图控制器,并启用了peek和pop,如下所示:
手势有效,但是当我3D触摸部分并保持足够突出被触摸的项目(但不弹出预览视图控制器)时,我得到倒置视图:
如何在仍使用倒置表视图的同时使用正确的变换弹出视图?
小智 2
轻按后显示颠倒视图的原因并不是因为它消除了单元格的变换。事实上,单元格上的转换保持原样,但 segue 将单元格视图从 tableView 的上下文中拉出。因此,单元格上的变换不再被表格上的变换抵消。
我相信您可以通过子类化 UIStoryboardSegue 来解决此问题,但切换在底部启动表格的方法可能会更容易。查看此问题的已接受答案。
我使用了稍微修改过的版本,其中包含导航栏和状态栏:
func updateTableContentInset() {
let numRows = tableView(self.tableView, numberOfRowsInSection: 0)
var contentInsetTop = self.tableView.bounds.size.height - (self.navigationController?.navigationBar.frame.size.height)! - 20
for i in 0..<numRows {
let rowRect = self.tableView.rectForRow(at: IndexPath(item: i, section: 0))
contentInsetTop -= rowRect.size.height
if contentInsetTop <= 0 {
contentInsetTop = 0
}
}
self.tableView.contentInset = UIEdgeInsetsMake(contentInsetTop, 0, 0, 0)
}
Run Code Online (Sandbox Code Playgroud)
只需将其添加到您的 UITableViewController 并在 viewDidLoad() 上以及每次将新行添加到表中时调用它即可。
添加新行然后调用 updateTableContentInset() 后,您将必须滚动到底部,如下所示:
tableView.scrollToRow(at: indexPath, at: .bottom, animated: true)
Run Code Online (Sandbox Code Playgroud)
因为这里没有任何颠倒的东西,所以你的 Peek segue 不会有问题。
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |