мой взгляд структурирована следующим образом:ИОС - Peek и поп - держать угловой радиус UIImageView внутри UICollectionView внутри UITableViewCell
UITableView
|
+-- MyTableViewCell
| |
| +-- UICollectionView
| |
| +-- MyCollectionViewCell
| |
| +-- UIImageView
UIImageView называется «значок» и его слой имеет определенный радиус закругления. Я реализовал Peek и Pop для элементов внутри Collection View, и он работает, но я не могу понять, как включить угловой радиус изображения в рамку предварительного просмотра.
Это, как я зарегистрировать Tableview для просмотра:
if #available(iOS 9.0, *), traitCollection.forceTouchCapability == .available {
registerForPreviewing(with: self, sourceView: tableView)
}
И это моя функция предпросмотра (вдохновленный от here):
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = tableView.indexPathForRow(at: location) else { return nil }
guard let cell = tableView.cellForRow(at: indexPath) as? MyTableViewCell else { return nil }
guard let collectionIndex = cell.collectionView.indexPathForItem(at: self.view.convert(location, to: cell.collectionView)) else { return nil }
guard let collectionViewCell = cell.collectionView.cellForItem(at: collectionIndex) as? MyCollectionViewCell else { return nil }
let iconRect = tableView.convert(collectionViewCell.icon.frame, from: collectionViewCell.icon.superview!)
previewingContext.sourceRect = iconRect
return someViewController
}
Это то, что я получаю в окне предварительного просмотра кадра, когда прикосновение к изображению прямо перед тем, как будет зафиксирован новый контроллер просмотра (так что наружная поверхность размыта):
Это то, что я хотел бы достичь, радиус угла изображения сохраняется (скриншот из App Store):
Читая other posts Я считаю, что проблема в том, что я зарегистрировать весь tableView для предварительного просмотра, а не его ячеек. Однако я не мог найти решение, которое работало для ящиков Collection View внутри ячеек Table View.
Любая помощь приветствуется.
Не могли бы вы рассказать об этом? –
Возможно, что-то вроде этого: [link] (http://stackoverflow.com/questions/7705879/ios-create-a-uiimage-or-uiimageview-with-rounded-corners). Это не то, что я сказал, но вы можете определенно получить доступ к объектам и настроить их. –
Изображение уже имеет угловой радиус и отлично работает. Проблема заключается в Peek и Pop в кадре предварительного просмотра, я не могу понять, как сохранить угловой радиус при передаче значка rect в 'previewingContext.sourceRect' –