我有一个视图控制器,其视图包含UICollectionView和UIImageView .

UICollectionView和图像视图是UIViewController的托管视图中的兄弟 . 当用户滚动UICollectionView时,UIImage有时应将其自身附加到其中一个UICollectionViewCell项的底部 .

我正在将项目转换为使用自动布局,我很高兴能够使用约束将UIImageView附加到UICollectionViewCell的底部 . 但是,它似乎没有起作用 .

当代码检测到相关的UICollectionViewCell变为可见时,它会从UIImageView中删除先前的定位约束,并添加一个约束,使UIImageView的顶部与UICollectionViewCell的底部相同 .

当发生这种情况时,UIImageView就会消失 . 我认为它在单元格可见之前被附加到UICollectionViewCell,但是没关系,它应该随之滚动到视图中 . 那没有发生 .

所以我的问题是这个......这可以吗?在我看来,UICollectionView很有可能使用老式的中心/边界系统来管理它的项目 . 特别是如果你看一下UICollectionViewLayout协议 . 这是否意味着我无法将约束附加到UICollectionViewCell并期望在集合视图中移动单元格时更新约束?

我正在附上下面的相关代码,以防它是一个简单的编码问题而不是更高级别的“你将回到绘图板” .

if([collectionView.indexPathsForVisibleItems containsObject:self.sliderPositionIndex]){
    UICollectionViewCell *lockedCell=[collectionView cellForItemAtIndexPath:self.sliderPositionIndex];
    [self.view removeConstraint:self.sliderVerticalSpaceConstraint];
    self.sliderVerticalSpaceConstraint=[NSLayoutConstraint constraintWithItem:self.sliderTab
                                                                      attribute:NSLayoutAttributeTop
                                                                      relatedBy:NSLayoutRelationEqual
                                                                         toItem:lockedCell
                                                                      attribute:NSLayoutAttributeBottom
                                                                     multiplier:1
                                                                       constant:0];
    [self.view addConstraint:self.sliderVerticalSpaceConstraint];
    [self.view setNeedsUpdateConstraints];