Cuando llamo al sizeToFit
en una de mis vistas, noté que el marco de iOS primero llama a sizeThatFits
y luego a layoutSubviews
en esa vista. Esto es problemático para mí porque el cálculo en mi sizeThatFits
depende de los resultados de mi layoutSubviews
. En el siguiente ejemplo, una subvista se ajusta en layoutSubviews
y la altura de esta subvista se usa en sizeThatFits
. Actualmente mi código no funciona, el orden se invierte.¿Cómo hacer que layoutSubviews sea llamado antes de sizeThatFits?
En viewDidLoad mi punto de vista del controlador:
UIView* header = [[MyHeader alloc] init];
[header sizeToFit];
self.tableView.tableHeaderView = header;
[header release];
En mi punto de vista:
- (void) layoutSubviews {
[super layoutSubviews];
[self.subView sizeToFit];
}
- (CGSize) sizeThatFits:(CGSize)size {
return CGSizeMake(
self.frame.size.width,
self.subView.frame.size.height
);
}
¿Alguna vez resolvió este problema? –
En su primer código, llame a '[header sizeToFit]' que no hace nada. 'MyTeader''s' sizeThatFits: 'no se reemplaza: > La implementación predeterminada de este método devuelve la porción de tamaño del rectángulo de límites de la vista. – Rivera