Ich habe gerade in Facebook SDK für iOS gesehen, rufen sie [super layoutSubviews]; am ende und nicht am anfang der layoutSubviews-methode. Soweit ich weiß sollten wir es immer als erste Zeile machen. Kann dies zu unerwartetem Verhalten der Benutzeroberfläche führen?Wie lautet die richtige Methode zum Aufrufen von [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];
}
"So weit ich weiß, sollten wir es immer als erste Zeile machen" Woher weißt du das? " – matt
@matt, ich glaube, das ist die Konvention der iOS-Entwickler-Community, da die Super-Klasse einige Standardeinstellungen haben kann, die unser benutzerdefiniertes Layout beeinflussen können (wenn wir es am Ende der Methode tun). Ähnlich wie Super in Konstruktoren/Initializern als erste Zeile aufrufen. – ppalancica
"Die Super-Klasse kann einige Standard/allgemeine Einstellungen haben, die unser benutzerdefiniertes Layout beeinflussen können (wenn wir es am Ende der Methode tun)." Ja, das ist absolut richtig. Aber das ist nicht dasselbe wie "sollte immer". – matt