强制触摸TableView单元格圆形窥视和弹出 - iOS Swift

时间:2017-01-27 00:50:10

标签: ios swift uitableview 3dtouch force-touch

在tableView中查看和弹出时,如何使previewingContext.sourceRect四舍五入?

目前:

  1. 强制触摸TableView单元格

  2. 设置预览委托:

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

  3. 我已经尝试设置单元格cell.layer.cornerRadius& cell.layer.maskToBounds = true中的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,但我希望橙色圆角rect(一个单元格)成为源矩形。

    enter image description here

1 个答案:

答案 0 :(得分:0)

您希望 ESP8266.write("AT+CWJAP="); ESP8266.write(SSID_ESP); ESP8266.write(","); ESP8266.write(SSID_KEY); ESP8266.write("\r\n"); 成为正常Peek后的Pop吗? 因为sourceRect是预览源(在本例中是您的单元格),而不是您的实际预览。

如果您希望Peek成为一个圆圈并正常弹出,请尝试此操作:

ViewController上添加此内容,然后再返回

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)