15

Sono interessato a realizzare una transizione tra il controller di vista molto simile alla transizione in Evernote per iOS:espandere/chiudere UITableViewCell per realizzare la transizione Evernote come

enter image description here

Quando "Luoghi" è sfruttato, si espande facilmente in quello che sembra UINavigationController con un bordo verde attorno ad esso. Per comprimerlo, posso toccare "Indietro" o scorrere dal lato sinistro dello schermo per passare gradualmente alla schermata principale.

Non sto cercando esempi di codice esatto per copiare e incollare, ma piuttosto per una guida di alto livello su cui i concetti e le API Apple fanno leva. Più specificatamente,

  • Quali API di transizione/animazione utilizza probabilmente?
  • Come posso ottenere il bordo verde attorno all'intero controller di visualizzazione una volta che "Luoghi" è stato espanso?
+0

Hai trovato un modo per implementare il modo in cui Evernote lo fa nella sua app? –

risposta

1

Un approccio da considerare: è possibile utilizzare uno UICollectionView con due layout diversi. Il layout non espanso può essere solo un UICollectionViewFlowLayout e il layout espanso può essere una sottoclasse che riduce/sbiadisce tutte le celle tranne quella che si desidera espandere. Quindi è possibile utilizzare setCollectionViewLayout:animated: per passare da uno all'altro.

Il bordo verde sarebbe solo lo sfondo della vista genitore, poiché ciò non comporterebbe uno UINavigationController.

E se si desidera il gesto di scorrimento interattivo per tornare indietro dal layout espanso, è possibile collegare uno UIScreenEdgePanGestureRecognizer a un'animazione di layout di visualizzazione collezione interattiva (vedere startInteractiveTransitionToCollectionViewLayout:completion:).

1

A giudicare da quel bordo intorno posti a schermo intero, direi che non è un UINavigationController ma piuttosto due controllori vista con transizione personalizzato tra di loro.

Questo è stato introdotto con iOS7 e si possono trovare qualche tutorial online per implementare eventuali transizioni personalizzate:

http://www.objc.io/issue-12/custom-container-view-controller-transitions.html

https://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIViewControllerTransitioningDelegate_protocol/index.html

2

Penso che utilizza una transizione personalizzato per l'effetto zoom in. Può essere ottenuto utilizzando questo framework di terze parti: https://github.com/mluisbrown/LCZoomTransition come modello poiché il controller della vista di destinazione ha l'aspetto di un controller di visualizzazione modale e non di una destinazione.