Prima pubblicazione su overflow dello stack.UIView e AutoresizingMask ignorato
Ho passato ore a perlustrare molte ricerche su Google e, a questo punto, ho praticamente memorizzato i documenti di riferimento di classe UIView e UIViewController. A prescindere da ciò che faccio, la mia app ignora i miei sforzi per ridimensionare le mie visualizzazioni sulla modifica dell'orientamento (o altre modifiche alla dimensione del fotogramma).
Non sono presenti nib o xibs; Sto costruendo tutte le mie viste e viewcontrollers a livello di codice, e loro (i viewcontrollers) sono tutte sottoclassi di una delle tre sottoclassi UIViewController personalizzate che ho creato. Queste classi eccellenti hanno le seguenti linee nel loro loadview: metodo ...
[self setView:[[[UIView alloc] initWithFrame:[self viewFrame]] autorelease]];
[[self view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[[self view] setAutoresizesSubviews:TRUE];
In tutti i metodi setter appropriati (ovunque io aggiungo una visualizzazione secondaria, in altre parole) sto ripetendo le fasi di applicare l'autoresizingMask. Sembra che non importa quello che faccio, il risultato è sempre lo stesso: faccio clic su build, fai clic su debug, attendi che l'app si avvii, ruoti il dispositivo e presto! La vista ruota ma non viene ridimensionata affatto.
Cosa mi manca qui? Probabilmente è qualcosa di ovvio che non sto vedendo. Qualsiasi aiuto è veramente apprezzato, grazie in anticipo.
Overriding -setFrame: è un modo abbastanza affidabile per vedere che una vista è stata ridimensionata. – aksommerville
Oh sì, certo! Io uso questa tecnica tutto il tempo in cui il conteggio dei ritardi del debugging, ma spesso trascuro di farlo in altre situazioni come questa. (Divertente quanto evasivo può essere ovvio.) Per chiarire il tuo commento per gli altri, questo si riferisce alla sovrascrittura -setFrame per sputare qualche NSLog che ti dice il nome della vista e alcuni valori di frame. (Non dimenticarti di chiamare l'implementazione di super se provi a farlo.) – quickthyme
A parte questo, non userei quel metodo per nient'altro. Vorrei anche fare in modo di disabilitare l'override prima di rilasciare il codice come produzione. – quickthyme