Cuando agrego una subvista a UIView
, o cuando cambio el tamaño de una subvista existente, esperaría que [view sizeToFit]
y [view sizeThatFits]
reflejen ese cambio. Sin embargo, mi experiencia es que sizeToFit
no hace nada, y sizeThatFits
devuelve el mismo valor antes y después del cambio.Tiene problemas para hacer que UIView sizeToFit haga algo significativo
Mi proyecto de prueba tiene una sola vista que contiene un solo botón. Hacer clic en el botón agrega otro botón a la vista y luego llama al sizeToFit
en la vista que lo contiene. Los límites de la vista se vuelcan a la consola antes y después de agregar la subvista.
- (void) logSizes {
NSLog(@"theView.bounds: %@", NSStringFromCGRect(theView.bounds));
NSLog(@"theView.sizeThatFits: %@", NSStringFromCGSize([theView sizeThatFits:CGSizeZero]));
}
- (void) buttonTouched {
[self logSizes];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10.0f, 100.0f, 400.0f, 600.0f);
[theView addSubview:btn];
[theView sizeToFit];
[self performSelector:@selector(logSizes) withObject:nil afterDelay:1.0];
}
Y la salida es:
2010-10-15 15:40:42.359 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:42.387 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
2010-10-15 15:40:43.389 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:43.391 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
Debo estar perdiendo algo aquí.
Gracias.
Gracias Ole. Debería haber leído los documentos más de cerca en lugar de buscar fragmentos de código que dependieran del comportamiento anulado en una subclase particular de UIView. – FishesCycle
Me sorprende que no haya una respuesta aquí que comparta la implementación de dicha anulación. – aleclarson