У меня есть UIScrollView, который должен показывать UIImageViews. ImageViews программно вставляются во время выполнения в зависимости от того, сколько изображений было сохранено пользователем ранее. Я получаю ошибку ниже:
Невозможно одновременно удовлетворить ограничения.
Вероятно, по крайней мере одно из ограничений в следующем списке вам не нужно. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения, и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, которые не понимаете, обратитесь к документации по свойству UIView translatesAutoresizingMaskIntoConstraints.)
"<NSLayoutConstraint:0x17029cd90 H:[UIView:0x15cd31e70]-(0)-| (Names: '|':UIScrollView:0x15cd326b0 )>", "<NSLayoutConstraint:0x17029d060 UIScrollView:0x15cd326b0.trailingMargin == UIView:0x15cd31e70.trailing>"
Я делаю базовую вещь Autolayout, когда прокрутка закрепляется со всех четырех сторон в 0 точках. Затем я добавляю contentView в качестве подпредставления (обычный UIView) UIScrollView, который также закреплен со всех четырех сторон в 0 точках.
РЕДАКТИРОВАТЬ изображение ограничений раскадровки
Я задаю contentView ширину в коде следующим образом:
CGSize pagesScrollViewSize = self.scrollView.frame.size;
NSDictionary *views = @{ @"contentView" : self.contentView};
NSDictionary *metrics = @{ @"width" : @(pagesScrollViewSize.width * self.mutableArray.count) };
NSArray *constraints;
constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[contentView(width)]-|" options:0 metrics:metrics views:views];
[self.scrollView addConstraints:constraints];
[self loadVisiblePages];
UIImageViews добавляются таким образом, когда UIImageViews добавляются на основе количества страниц, установленных при переходе к ViewController.
-(void)loadVisiblePages{
CGRect frame = self.scrollView.bounds;
frame.origin.x = frame.size.width * self.page;
frame.origin.y = 0.0f;
ImageForArchiving *newImageObject = (ImageForArchiving*)self.mutableArray[page];
UIImage *imageForNewPageView = newImageObject.image;
UIImageView *newPageView = [[UIImageView alloc] initWithFrame:frame];
[newPageView setTranslatesAutoresizingMaskIntoConstraints:YES];
newPageView.contentMode = UIViewContentModeScaleAspectFit;
newPageView.image = imageForNewPageView;
[self.scrollView addSubview:newPageView];
[self.pageViews replaceObjectAtIndex:page withObject:newPageView];
}
}
Кроме того, когда я прокручиваю UIScrollView, отображаемые изображения хаотично изменяют размер при вращении. Я думаю, что это как раз следствие приведенного выше предупреждения и того, что я еще не выложил UIImageViews. Что означает приведенное выше предупреждение в этом контексте и как его исправить?