UIScrollView с iOS Auto Layout Ограничения: неправильный размер для подпредставлений
Я пытаюсь создать представление в коде. Вот'Иерархия моего взгляда на объект
UIScrollViewUIViewUIButtonScrollView должен быть того же размера, что и окно. Кнопка должна быть максимально большой. Я'я использую автоматическую разметку iOS, поэтому строки ограничений для всех моих объектов выглядят так:
H:|[object]|
V:|[object]|
мы также установилиtranslatesAutoresizingMaskIntoConstraints
вNO
для каждого объекта.
Проблема в том, что кнопка получает только размер кнопки по умолчанию. Его родительский объект представления (UIView) только получает размер, в котором нуждаются его подпредставления.
красный: UIScrollView / желтый: UIView
Как я могу заставить эти представления быть такими же большими, как scrollView?
Когда я использую UIView вместо UIScrollView, все прекрасно работает ...
Вот'какой-то код:
- (void) viewDidLoad {
[super viewDidLoad];
// SCROLL VIEW
UIScrollView* scrollView = [UIScrollView new];
scrollView.backgroundColor=[UIColor redColor];
scrollView.translatesAutoresizingMaskIntoConstraints = NO;
//CONTAINER VIEW
UIView *containerView = [UIView new];
containerView.translatesAutoresizingMaskIntoConstraints = NO;
containerView.backgroundColor = [UIColor yellowColor];
[scrollView addSubview:containerView];
// CONSTRAINTS SCROLL VIEW - CONTAINER VIEW
[scrollView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[containerView]|"
options:0 metrics:nil
views:@{@"containerView":containerView}]];
[scrollView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[containerView]|"
options:0 metrics:nil
views:@{@"containerView":containerView}]];
// BUTTON
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.translatesAutoresizingMaskIntoConstraints = NO;
[button setTitle:@"I'm way to small" forState:UIControlStateNormal];
[containerView addSubview:button];
// CONSTRAINTS CONTAINER VIEW - BUTTON
[containerView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[button]|"
options:0 metrics:nil
views:@{@"button":button}]];
[containerView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[button]|"
options:0 metrics:nil
views:@{@"button":button}]];
self.view = scrollView;
}
ОБНОВИТЬ: Я действительно нене знаю, почему это происходит. Если вы настраиваете представление в IB, подключаете розетки и создаете представление в коде, представление прокрутки ведет себя как нормальное представление (которое подпрыгивает вертикально). Его contentSize не рассчитан правильно. БольшеВот, Но как это сделать правильно?