UIImageViewsを表示するUIScrollViewがあります。ImageViews は、ユーザーが以前に保存した画像の数に基づいて、実行時にプログラムによって挿入されます。以下のエラーが表示されます。
制約を同時に満たすことができません。
おそらく、次のリストの制約の少なくとも 1 つが望ましくないものです。これを試してみてください: (1) 各制約を見て、どれが予期しないものかを把握してみてください。(2) 不要な制約を追加したコードを見つけて修正します。(注: 理解できない NSAutoresizingMaskLayoutConstraints が表示されている場合は、UIView プロパティ translatesAutoresizingMaskIntoConstraints のドキュメントを参照してください)
"<NSLayoutConstraint:0x17029cd90 H:[UIView:0x15cd31e70]-(0)-| (Names: '|':UIScrollView:0x15cd326b0 )>", "<NSLayoutConstraint:0x17029d060 UIScrollView:0x15cd326b0.trailingMargin == UIView:0x15cd31e70.trailing>"
スクロールビューが 4 つの側面すべてに 0 ポイントで固定される基本的な Autolayout を実行します。次に、UIScrollView のサブビュー (プレーン UIView) として contentView を追加します。これも 4 辺すべてに 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 は、ViewController へのセグエが発生したときに設定されたページ数に基づいて UIImageViews が追加される場所に追加されます。
-(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 をまだレイアウトしていないという事実の結果に過ぎないと思います。このコンテキストで上記の警告は何を意味し、どのように修正すればよいですか?