So che ci sono un paio di domande in giro ma non riesco a capire come farlo (nessuna delle risposte mi ha aiutato), quindi ecco la mia versione della domanda.UIScrollView zoom con Autolayout
Ho un UICollectionView
che è impostato per scorrere orizzontalmente. Ogni cella ha uno UIScrollView
all'interno e all'interno dello UIScrollView
Ho uno UIImageView
.
Ora, le immagini visualizzate da UIImageView
vengono caricate da Internet e non riesco a trovare un modo per fare in modo che lo zoom funzioni correttamente utilizzando gli storyboard e l'autolayout.
Se imposto vincoli che legano il mio UIScrollView
al suo contenitore, tutto è ok. Nel momento in cui lego loallo UIScrollView
XCode inizia a lamentarsi del fatto che la dimensione dello UIScrollView
è ambigua.
Se non eseguo alcun vincolo in InterfaceBuilder, le immagini non sono visualizzate nella dimensione corretta (doh!).
Quindi, sono bloccato. Non so quali siano i vincoli da fare e quale visione debba essere legata a cosa. So che il mio risultato perfetto è un controller di visualizzazione che si comporta come l'app nativa per le foto di iOS. Cioè, l'immagine viene visualizzata grande quanto lo schermo (con una banda nera in alto e in basso o a sinistra, & a seconda dell'orientamento dell'immagine) e che è possibile ingrandirla e spostarla.
Aiuto per favore!
Nota
ho letto questi messaggi prima di inviare la mia domanda
- UIScrollView zooming with Auto Layout
- UIScrollView Zoom Does Not Work With Autolayout
- “Pinch to Zoom” using AutoLayout
Il fatto è che anche quando creo il mio 'UIImageView' in modo programmatico non riesco a farlo funzionare come dovrebbe. L'immagine viene visualizzata bene (centrata in 'UIScrollView'), ma quando eseguo lo zoom, si aggancia sempre all'angolo in alto a sinistra anziché al centro di' UIScrollView'. Quindi è strano Mi sto perdendo qualcosa? –
Sì, ti manca qualcosa. Scatta in alto a sinistra perché non stai cambiando la sua origine solo la sua scala. È necessario aggiungere ulteriore logica per aggiornare anche l'offset del contenuto della vista di scorrimento. Puoi pubblicare il tuo codice di zoom. – Fogmeister
Bene, non c'è molto codice "zoom". Prima di passare al layout automatico tutto quello che dovevo fare è restituire il mio contenuto "zommable" dal metodo 'viewForZoomingInScrollView (scrollView: UIScrollView) -> UIView?' E impostare un 'maximumZoomScale' maggiore di 0 e ** BOOM ** zoom, panoramica e tutti i lavori ... –