Ho appena visto in Facebook SDK per iOS, chiamano [super layoutSubviews]; alla fine e non all'inizio del metodo layoutSubviews. Per quanto ne so, dovremmo sempre farlo come prima linea. In questo modo, può creare un comportamento imprevisto per l'interfaccia utente?Qual è il modo corretto per chiamare [super layoutsubviews]?
- (void)layoutSubviews
{
CGSize size = self.bounds.size;
CGSize longTitleSize = [self sizeThatFits:size title:[self _longLogInTitle]];
NSString *title = (longTitleSize.width <= size.width ?
[self _longLogInTitle] :
[self _shortLogInTitle]);
if (![title isEqualToString:[self titleForState:UIControlStateNormal]]) {
[self setTitle:title forState:UIControlStateNormal];
}
[super layoutSubviews];
}
"Per quanto ne so, dovremmo sempre farlo come prima linea" Come fai a "sapere" quello? – matt
@matt, credo che questa sia la convenzione utilizzata dalla comunità degli sviluppatori iOS poiché la super-classe potrebbe avere alcune impostazioni di default/generali che potrebbero influire sul nostro layout personalizzato da non applicare (se lo facciamo alla fine del metodo). Analogamente a chiamare super in costruttori/inizializzatori come prima riga. – ppalancica
"la super classe potrebbe avere alcune impostazioni di default/generali che potrebbero influenzare il nostro layout personalizzato da non applicare (se lo facciamo alla fine del metodo)." Sì, è assolutamente vero. Ma non è lo stesso di "dovrebbe sempre". – matt