2017-02-22 2 views
0

Meine Ansicht wie folgt strukturiert:ios - Peek & Pop - halter Eckenradius von UIImageView innerhalb UICollectionView innerhalb UITableViewCell

UITableView 
|  
+-- MyTableViewCell 
| | 
| +-- UICollectionView 
|  | 
|  +-- MyCollectionViewCell 
|  | 
|  +-- UIImageView 

Die UIImageView heißt ‚Ikone‘ und seine Schicht hat bestimmten Eckenradius. Ich habe Peek und Pop für Objekte in der Sammlungsansicht implementiert, und es funktioniert, aber ich kann nicht herausfinden, wie man den Eckenradius des Bildes in den Vorschaubereich einbezieht. Diese

ist, wie ich das Tableview registrieren für die Vorschau:

if #available(iOS 9.0, *), traitCollection.forceTouchCapability == .available { 
    registerForPreviewing(with: self, sourceView: tableView) 
} 

Und das ist meine Vorschau-Funktion (inspiriert von 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 

} 

Dies ist, was ich im Vorschaurahmen erhalten, wenn erzwingt das Berühren des Bildes, kurz bevor der neue Ansichtscontroller festgeschrieben wird (so dass die Außenansicht verwischt wird):

image1

Dies ist, was würde Ich mag, Radius der Bildecke erreichen, wird erhalten (Screenshot aus dem App Store):

image2

von other posts Lese ich glaube, das Problem ist, dass ich die ganze registrieren tableView für die Vorschau, anstatt seiner Zellen. Ich konnte jedoch keine Lösung finden, die für Collection View-Zellen in Tabellenansichtszellen funktioniert.

Jede Hilfe wird geschätzt.

Antwort

0

Können Sie die UIImageView überschreiben und eine Art von benutzerdefinierten Zeichnungsfunktionen erstellen?

+0

Können Sie das näher erläutern? –

+0

Vielleicht etwas wie dieses: [link] (http://stackoverflow.com/questions/7705879/ios-create-a-uiimage-or-uiimageview-with-rounded-corner). Es ist nicht das, was ich gesagt habe, aber Sie können auf jeden Fall Zugang zu den Objekten bekommen und sie anpassen. –

+0

Das Bild hat bereits einen Eckenradius und funktioniert einwandfrei. Das Problem ist mit Peek und Pop im Vorschaurahmen, ich kann nicht herausfinden, wie man den Eckenradius beim Übergeben des Symbols rect auf "previewingContext.sourceRect" hält. –

Verwandte Themen