Когда я добавляю subview к UIView
или когда я изменяю размер существующего subview, я бы ожидал, что [view sizeToFit]
и [view sizeThatFits]
будут отражать это изменение. Однако, мой опыт заключается в том, что sizeToFit
ничего не делает, а sizeThatFits
возвращает одно и то же значение до и после изменения.
В моем тестовом проекте есть одно представление, содержащее одну кнопку. Нажатие кнопки добавляет еще одну кнопку в представление, а затем вызывает sizeToFit
на содержащем представлении. Границы представления сбрасываются на консоль до и после добавления subview.
- (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];
}
И результат:
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}
Мне что-то не хватает.
Спасибо.