我剛剛在Facebook SDK for iOS中看到,他們稱[super layoutSubviews];最後,而不是layoutSubviews方法的開始。 據我所知,我們應該始終把它作爲第一行。 這樣做是否可以爲UI創建一些意想不到的行爲?調用[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];
}
「據我所知,我們應該始終把它作爲第一行」你怎麼知道「? – matt
@matt,我相信這是iOS開發者社區使用的約定,因爲超類可能會有一些默認/常規設置,可能會影響我們的自定義佈局不被應用(如果我們在方法結束時執行此操作)。與在構造函數/初始化器中作爲第一行調用super相似。 – ppalancica
「超級類可能有一些默認/常規設置,可能會影響我們的自定義佈局不被應用(如果我們在方法結束時執行此操作)」。是的,這是絕對正確的。但這與「永遠應該」不一樣。 – matt