2017-02-22 65 views
0

мой взгляд структурирована следующим образом:ИОС - 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 

} 

Это то, что я получаю в окне предварительного просмотра кадра, когда прикосновение к изображению прямо перед тем, как будет зафиксирован новый контроллер просмотра (так что наружная поверхность размыта):

image1

Это то, что я хотел бы достичь, радиус угла изображения сохраняется (скриншот из App Store):

image2

Читая other posts Я считаю, что проблема в том, что я зарегистрировать весь tableView для предварительного просмотра, а не его ячеек. Однако я не мог найти решение, которое работало для ящиков Collection View внутри ячеек Table View.

Любая помощь приветствуется.

ответ

0

Не могли бы вы переопределить UIImageView и создать какие-то пользовательские функции рисования?

+0

Не могли бы вы рассказать об этом? –

+0

Возможно, что-то вроде этого: [link] (http://stackoverflow.com/questions/7705879/ios-create-a-uiimage-or-uiimageview-with-rounded-corners). Это не то, что я сказал, но вы можете определенно получить доступ к объектам и настроить их. –

+0

Изображение уже имеет угловой радиус и отлично работает. Проблема заключается в Peek и Pop в кадре предварительного просмотра, я не могу понять, как сохранить угловой радиус при передаче значка rect в 'previewingContext.sourceRect' –