2015-05-27 9 views
7

che sto cercando di fare layout all'interno scrollview utilizzando questa esercitazione https://www.youtube.com/watch?v=UnQsFlMGDsICome rendere la visualizzazione di solo scorrimento verticale solo per iOS?

E ottenere il seguente risultato http://youtu.be/iPfzyLbEZMA

Sarà apprezzato per eventuali consigli o link del tutorial. Necessita solo di scorrimento verticale

+0

Non riesco a vedere il tuo secondo video. E prova a postare qui il problema invece di condurci ad altro link – sasquatch

+0

Lo scorrimento di una scrollview dipende dal suo contentSize. – matthias

+0

Penso che la larghezza di UIScrollView sia maggiore della larghezza dello schermo per cui si verifica lo scorrimento orizzontale. prova a fare larghezza esatta come lo schermo ha. –

risposta

10

Sono sicuro che ci devono essere altri modi per fare questo, ma è una soluzione rapida:

1.) Creare un vincolo di larghezza su contentView in Storyborad.

2.) IBOutlet che larghezzaContraint e impostare il suo valore per la larghezza della vista in viewDidLoad.

Supponiamo che il nome dell'output del vincolo sia contentViewWidthContraint.

contentViewWidthContraint.constant = self.view.bounds.size.width; 

Un'altra alternativa per farlo dal Storyboard, è quello di fissare la larghezza del contentView alla larghezza della vista dallo storyboard o alla Scrollview, se Scrollview ha già un contraint larghezza uguale con superview. Aggiungi il contraint "Larghezza uguale" da Contentview a self.view oa Scrollview (se scrollview, ha già il contraint larghezza)

+2

Sei magico :) Grazie mille –

0

Anche i vincoli UIScrollView sono impostati come sotto il codice in modo che occupi tutto lo schermo. Non superare le dimensioni dello schermo.

Leading Space = 0 from mainView 
Top Space = 0 from mainView 
Bottom Space = 0 from mainView 
Trailing Space = 0 from mainView 
+0

Già fatto, ma non aiuta –

+0

@AlexeyZakevich, può per favore aggiungi una schermata del layout delle impostazioni di UIScrollView? se non hai alcun problema. –

+0

@AlexeyZakevich, applicato lo stesso contrappeso di layout a UIView all'interno di ScrollView. –

0

È necessario impostare la larghezza di UIScrollView uguale o inferiore alla larghezza della vista padre. Due modi per farlo:

1) si può fare questo in Storyboard via dei vincoli di layout

2) si può fare questo programatically:

self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.contentSize.height); 
+0

provando prima e seconda, ma ancora con problema –

0

tenta di impostare la sua larghezza a 0 & altezza pari alla dimensione del contenuto:

self.scrollView.contentSize = CGSizeMake(0, self.scrollView.contentSize.height); 

Questo funzionerà come si desidera. Provalo & se hai ancora problemi.

+0

Problema ancora in sospeso ... –

+0

Potresti pubblicare il tuo codice relativo alla tua vista di scorrimento? – iYoung

+0

Tutti progettati nello storyboard utilizzando i vincoli –

0

Per disabilitare lo scorrimento orizzontale, puoi impostare la dimensione del contenuto nel metodo -(void)scrollViewDidScroll.

[self.scrollView setContentOffset: CGPointMake(0, self.scrollView.contentOffset.y)]; 
self.scrollView.directionalLockEnabled = YES; 
7

Avete impostato la larghezza "contentView" in modo che corrisponda con la larghezza vista di scorrimento? Ho avuto lo stesso problema e ho risolto con "uguale ampiezza".

"larghezze uguali" dirà al tuo "contentView" per usare la stessa larghezza del "Scroll View", che dovrebbe essere addice lo schermo se è stato impostato il vincolo correttamente.

È possibile farlo facilmente sullo storyboard.

  1. Drag and drop, con tasto destro del mouse (importante !!!), da "contentView" a "ScrollView"
  2. rilasciare il click, verrà richiesto con un menu, selezionare "larghezze uguali ".

    Prompted menu

Questo dovrebbe risolvere il problema utilizzando lo ScrollView con layout automatico da editor di Storyboard.

È possibile trovare un'esercitazione completa su come utilizzare ScrollView con Autolayout e Storyboard here.

Spero che questo sia utile per voi :)

+1

Cosa che mi ha aiutato in questa risposta era incorporare le mie etichette all'interno di una vista e cercando di ottenere la scrollview lavorando con quella singola vista. –

2

nello storyboard impostare la larghezza degli elementi contenuti nella vostra UIScrollView pari alla larghezza di questa UIScrollView (selezionando tutti gli elementi e l'UIScrollView tenendo nel pannello a a sinistra dello Storyboard e quindi imposta il vincolo "Larghezze uguali" sotto "Pin" nella parte inferiore dello Storyboard). Basta fissare i lati destro degli elementi a quello di UIScrollView non funzionerà in quanto regolerà la dimensione della sua "visualizzazione di visualizzazione" alla larghezza dell'elemento più grande e se questo è inferiore alla larghezza di UIScrollView tutti gli elementi saranno sembra solo allineato al suo lato sinistro.

2

C'è anche un'altra possibilità che offre un ottimo risultato.

è possibile contrassegnare una casella di controllo:

enter image description here

O di programmazione:

scrollView.alwaysBounceVertical = true 
0

Questo perché vista di scorrimento non hanno idea di dove il vostro contenuto deve finire.

Ma quando almeno un elemento all'interno della vista di scorrimento ha il vincolo "spazio finale" collegato a una vista esterna alla vista di scorrimento (di solito una vista è la vista di scorrimento o un'altra vista di un livello superiore, che " conosce "la sua larghezza) - la vista di scorrimento avrà automaticamente un'idea della larghezza desiderata e non scorrerà orizzontalmente (a meno che il vincolo finale non includa il contenuto all'esterno dello schermo).

Migliore se tutti gli elementi all'interno della vista di scorrimento hanno i loro vincoli di "spazio finale" collegati tra loro o ad una vista esterna alla vista di scorrimento. Ma non la vista di scorrimento stessa.

Nessun codice aggiuntivo o vincoli aggiuntivi necessari per il funzionamento.