2017-01-27 12 views
0

В то время как заглядывать и появляться в таблицеView, как мне сделать мой previewingContext.sourceRect округленным?Force Touch TableView Cell Rounded Peek and Pop - iOS Swift

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

  1. Force Нажмите на TableView Cell

  2. Установите делегат их просмотра, как например:

    previewingContext.sourecRect = tableView.rectForRow (по адресу: indexPath)

Я уже пробовал установить ячейку cell.layer.cornerRadius & cell.layer.maskToBounds = true в cellForRowAtIndexPath, однако предварительный просмотр soruce rect по-прежнему является идеальным прямоугольником.

Соответствующий код:

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

+0

Вы также установили 'layer.masksToBounds = true'? – raidfive

+0

Да, отредактированный вопрос, чтобы отразить это – Jerland2

+0

без вашего текущего кода. Думаю, никто не может так помочь. отправьте соответствующие фрагменты кода – muescha

ответ

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) 
+0

Im ищет источник контекста предварительного просмотра, чтобы быть закругленной прямоугольной ячейкой. Я бы хотел, чтобы и peek и pop оставались ванилью. Однако, когда я начинаю нажимать на ячейку tableview, используется вся ячейка (как прямоугольник). Я обновляю свой пост с изображением, показывающим, что я пытаюсь достичь – Jerland2

 Смежные вопросы

  • Нет связанных вопросов^_^