我有一個UIScrollView是顯示UIImageViews。基於用戶以前保存了多少圖像,ImageViews在運行時以編程方式插入。我得到以下錯誤:自動佈局錯誤無法同時滿足約束與UIScrollView
無法同時滿足約束。
以下列表中的至少一個約束可能是您不想要的一個 。嘗試這一點:(1)看看每個約束,並嘗試找出你不期望的 ; (2)找到添加了不想要的約束或約束並修復它的代碼。 (注意:如果你看到 NSAutoresizingMaskLayoutConstraints,你不明白,請參閱 到文檔中的UIView財產 translatesAutoresizingMaskIntoConstraints)
"<NSLayoutConstraint:0x17029cd90 H:[UIView:0x15cd31e70]-(0)-| (Names: '|':UIScrollView:0x15cd326b0)>", "<NSLayoutConstraint:0x17029d060 UIScrollView:0x15cd326b0.trailingMargin == UIView:0x15cd31e70.trailing>"
我做到哪裏了滾動被固定在基本的自動佈局的東西所有四方都在0分。然後我添加一個contentView作爲UIScrollView的子視圖(普通的UIView),它也被固定在所有四邊的0點。
EDIT故事板約束圖像
我請內容查看的寬度在代碼如下所示:
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的segue時設置的頁面。
-(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時,顯示的圖像在旋轉時會不規則地改變大小。我認爲這只是上述警告的結果,而且我還沒有放棄UIImageView。上述警告在這種情況下意味着什麼,我該如何解決?
您添加了哪些約束將contentView固定到scrollView? –
ContentView固定在所有4邊的滾動視圖中。因此,contentView的左側固定爲0點的左側滾動視圖,contentView的各個側面固定爲UIScrollView。 contentView和UIScrollView之間沒有其他限制 – noobsmcgoobs