2013-09-02 17 views
36

Ho un UIView, desidero modificare le dimensioni quando l'utente tocca un pulsante.Modifica delle dimensioni di UIView a livello di programmazione

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self setFrame:newFrame]; 

CGRect newFrame = self.searchField.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
self.searchField.frame=newFrame; 

Nessuno di essi funziona, non modificare nulla. Voglio impostare larghezza e altezza fisse su UIView.

+0

È questo nel file di implementazione della vista controllore? –

+0

@Tim Bodeit si. – onivi

risposta

71

Se ho capito bene, si desidera modificare le dimensioni di self.myview. Tuttavia in nessun punto si sta impostando la cornice di esso. Invece stai cercando di chiamare sendFrame: sul controller della vista e qualche campo di ricerca. Sono sorpreso, che il primo non ti ha dato un errore del compilatore.

Prova:

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self.myview setFrame:newFrame]; 
+1

Il downvoter si preoccuperebbe di commentare perché? –

+4

il codice sembra non avere alcun effetto su UICollectionView – Gerry

+0

@Gerry: funzionerà su UICollectionView. Anche se non funzionerà sulle celle all'interno di una vista di raccolta. Le dimensioni di queste sono impostate dal layout utilizzato per la vista di raccolta, non dalle viste stesse. Dai un'occhiata a collectionView: layout: sizeForItemAtIndexPath dal protocollo UICollectionViewDelegateFlowLayout –

5
view.frame = newframe; 

o

view.center = newcenter; 
4

Nel mio caso, ho avuto un vincolo sulla larghezza del mio punto di vista, quindi non ho potuto cambiare la larghezza, come ha detto Tim .

Quello che ho fatto: ho creato uno sbocco per la mia difesa, chiamato per esempio myviewWidthConstraint. Poi ho usato questo sbocco per modificare la larghezza del mio punto di vista in questo modo:

mycell.myviewWidthConstraint.constant = newSize; 
0

campi Dimensioni sono di sola lettura, basta fare uno nuovo -

//Set height 
let f = view.frame;  //Grab current 
view.frame = CGRect(x: f.origin.x, y: f.origin.y, width: f.width, height: 200); 
Problemi correlati