Force Touch TableView Cell Округлый взгляд и поп - iOS Swift
Пока я заглядываю в tableView, как мне сделать мой previewingContext.sourceRect
округлый?
В данный момент:
Принудительное прикосновение к ячейке TableView
Установите делегат для предварительного просмотра следующим образом:
previewingContext.sourecRect = tableView.rectForRow (at: indexPath)
Я уже пытался установить ячейку cell.layer.cornerRadius
& cell.layer.maskToBounds = true
в cellForRowAtIndexPath
, Тем не менее, предварительный просмотр прямоугольника soruce по-прежнему является идеальным прямоугольником.
Соответствующий код:
UIVIewControllerPreviewingDelegate
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
if tableView.isEditing == false {
guard let indexPath = tableView.indexPathForRow(at: location) else {
print("Nil Cell Found: \(location)")
return nil }
guard let detailVC = storyboard?.instantiateViewController(withIdentifier: "view") as? ViewController else { return nil }
previewingContext.sourceRect = tableView.rectForRow(at: indexPath)
return detailVC
} else {
return nil
}
}
TableView CellForRowAtIndexPath
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? CustomCell else { fatalError("No cell with identifier: cell") }
cell.titleLabel.text = "temp"
// cell.inputView?.layer.cornerRadius = 16.0
// cell.inputView?.layer.masksToBounds = true
// cell.contentView.layer.cornerRadius = 16.0
// cell.contentView.layer.masksToBounds = true
cell.layer.cornerRadius = 16.0
cell.layer.borderWidth = 2
cell.layer.borderColor = UIColor.orange.cgColor
cell.layer.masksToBounds = true
return cell
}
}
В настоящее время, когда нужно просто прикоснуться к ячейке табличного представления, выделяется синяя рамка на изображении ниже, и она является исходной, однако я хочу, чтобы оранжевый прямоугольник с закругленными углами (одной ячейки) был исходным.
1 ответ
Вы хотите, чтобы ваш Peek
быть кругом тогда Pop
как обычно ViewController
? Потому что sourceRect является источником вашего предварительного просмотра (в данном случае вашей ячейки), а не вашего фактического предварительного просмотра.
Попробуйте это, если вы хотите, чтобы ваш Peek стал кругом, и поп обычно:
На ваше previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController?
добавить это, прежде чем вернуться
detailVC.view.layer.cornerRadius = detailVC.view.bounds.width / 2
detailVC.view.layer.masksToBounds = true
И по вашему previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)
добавить это, прежде чем показать
detailVC.view.layer.cornerRadius = 0
show(detailVC, sender: self)