Quando chiamo sizeToFit
su una delle mie visualizzazioni, ho notato che il framework iOS prima chiama sizeThatFits
e quindi layoutSubviews
su quella vista. Questo è un problema per me perché il calcolo nel mio sizeThatFits
dipende dai risultati del mio layoutSubviews
. Nell'esempio seguente, una sottoview viene regolata in layoutSubviews
e l'altezza di questa sottoview viene utilizzata in sizeThatFits
. Attualmente il mio codice non funziona, l'ordine è invertito.Come ottenere il layout delle immagini da chiamare prima di sizeThatFits?
In viewDidLoad di mio controller della vista:
UIView* header = [[MyHeader alloc] init];
[header sizeToFit];
self.tableView.tableHeaderView = header;
[header release];
A mio avviso:
- (void) layoutSubviews {
[super layoutSubviews];
[self.subView sizeToFit];
}
- (CGSize) sizeThatFits:(CGSize)size {
return CGSizeMake(
self.frame.size.width,
self.subView.frame.size.height
);
}
Hai mai risolto questo problema? –
Nel tuo primo codice si chiama '[header sizeToFit]' che non fa nulla 'sizeThatFits:' MyHeader' non è sovrascritto: > L'implementazione predefinita di questo metodo restituisce la porzione di dimensioni del rettangolo dei limiti della vista. – Rivera