2012-10-22 12 views
8

Sto provando a ridimensionare l'altezza di UICollectionView impostandolo su 0 quando viene caricato il controller di visualizzazione, quindi aumentando le sue dimensioni con un'animazione quando viene premuto un pulsante. Ho provato un paio di cose diverse ma non cambia affatto di dimensioni. Ecco tutte le diverse cose che ho provato a cambiare la sua altezza a 0:Ridimensiona UICollectionView Height

CGRect bounds = [self.collectionView bounds]; 
[self.collectionView setBounds:CGRectMake(bounds.origin.x, 
              bounds.origin.y, 
              bounds.size.width, 
              bounds.size.height - 100)]; 

....

CGRect frame = [self.collectionView frame]; 
[self.collectionView setFrame:CGRectMake(frame.origin.x, 
           frame.origin.y, 
           frame.size.width, 
           frame.size.height - 100)]; 

....

CGRect frame = self.collectionView.frame; 
frame.size.height -= 100; 
self.collectionView.frame = frame; 

....

self.collectionView.clipsToBounds = YES; 
self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
+0

è 'self.collectionView' realtà impostato su qualcosa? Stai usando AutoLayout? – mattjgalloway

+0

ho impostato la vista collezione come presa. Sì AutoLayout è attivo. –

+5

Se si utilizza AutoLayout, è necessario modificare i vincoli piuttosto che modificare direttamente la cornice. Dovrai impostare un vincolo di altezza nella vista della collezione. – mattjgalloway

risposta

4

Se si utilizza Interface Builder per UICollectionView i Nitializzazione, disattivare "Usa Autolayout" da File Inspector nel file xib in cui viene creato il tuo CollectionView. Quindi puoi cambiare l'altezza con i metodi setFrame o setBounds.

+0

Funziona bene ma perderemo AutoLayout in tutta l'applicazione. –

+0

È ancora possibile utilizzare le funzionalità di ridimensionamento automatico – Gokul

+1

Non è possibile ottenere questo risultato con AutoLayout abilitato? – MrBr

2

È possibile evitare la disattivazione di Autolayout creando una presa per il vincolo di altezza e quindi regolando la costante del vincolo nel codice.

uscita

@IBOutlet weak var collectionViewVerticalConstraint: NSLayoutConstraint! 

regolazione

collectionViewVerticalConstraint.constant = 0 
Problemi correlati