Force Touch TableView Cell Округлый взгляд и поп - iOS Swift

Пока я заглядываю в tableView, как мне сделать мой previewingContext.sourceRect округлый?

В данный момент:

  1. Принудительное прикосновение к ячейке TableView

  2. Установите делегат для предварительного просмотра следующим образом:

    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)
Другие вопросы по тегам