Как мне сделать UIScrollView вписаться в родительский фрейм в NSLayoutConstraint?
Я создал UIScrollView
в XIB-файле, есть некоторые подпредставления и ограничения в нем.
Тогда добавьте это к представлению прагматично.
NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.scrollView = arr[0];
[self.view addSubview:self.scrollView];
self.scrollView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
ScrollView добавляет в представление, но это кадр или contentSize
всегда неправильно, я пытаюсь сбросить его contentSize
но не сработало.
Он всегда может прокручиваться по горизонтали. Я хочу изменить его размер как UIView
чтобы соответствовать родительской структуре, надеюсь, кто-нибудь может помочь мне решить ее.
2 ответа
Переопределите следующий метод и добавьте в него свой скроллвью или обновите фрейм. Этот метод вызывается, когда все ограничения применяются к представлениям.
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
}
Для предотвращения прокрутки установите размер содержимого 0 для этого направления. например
[scrollview setContentSize:CGSizeMake(500,0)];
Это позволит просто горизонтальную прокрутку.
Если вы не хотите использовать раскадровку, вы можете программно добавить ограничения для движения вперед, сзади, сверху и снизу:
[self.view addSubview:self.scrollView];
self.scrollView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[scrollview]-|" options:0 metrics:nil views:@{@"scrollview":self.scrollView}]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[scrollview]-|" options:0 metrics:nil views:@{@"scrollview":self.scrollView}]];
[self.view updateConstraints];
[self.view layoutIfNeeded];