Как мне сделать 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];
Другие вопросы по тегам