2011-08-27 8 views
7

Ho creato switch in cellForRowAtIndexPath come questo.Cosa significa? initWithFrame: CGRectZero]

UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero]; 

CGRectZero è equivalente a CGRectMake (0,0,0,0). Ma, l'interruttore è visto in dimensioni normali. Non ho specificato la dimensione di comando. Per favore spiegami come funziona il codice sopra.

risposta

6

UISwitch non è personalizzabile, questo vale anche per le dimensioni.

UISwitch esegue l'override initWithFrame: e applica una dimensione appropriata per il controllo. I componenti delle dimensioni del rettangolo specificato vengono ignorati.

+0

effettivamente UISwitch sovrascrive sizeThatFits: ma l'effetto è lo stesso. – progrmr

0

Qualsiasi oggetto UIView può sovrascrivere la dimensione del fotogramma implementando il metodo sizeThatFits: di UIView. Infatti la UIView class reference dice che:

un oggetto UISwitch restituisce un valore di dimensione fissa che rappresenta la dimensione standard di una vista dell'interruttore