0

在 tableView 中查看和弹出时,如何使我的previewingContext.sourceRect圆形?

眼下:

  1. 在 TableView 单元上强制触摸

  2. 将预览委托设置为:

    previewingContext.sourecRect = tableView.rectForRow(at: indexPath)

我已经尝试设置单元格的cell.layer.cornerRadius& cell.layer.maskToBounds = truein cellForRowAtIndexPath,但是预览的源矩形仍然是一个完美的矩形。

相关代码:

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

        }

    }

目前,当仅强制触摸 tableview 单元格时,下图中的蓝色框被选中并且是 sourcerect,但是我希望橙色圆角矩形(一个单元格)成为源矩形。

在此处输入图像描述

4

1 回答 1

0

你想让你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)
于 2017-01-27T09:05:40.333 回答