CollectionViewCell中的Autolayout Contraints更改

时间:2015-06-19 08:22:39

标签: ios autolayout uicollectionview pure-layout

我正在使用PureLayout来创建约束

cellForItemAtIndexPath

中的

if (!_itemDetails){
            _itemDetails = cell.itemDetails;
            _itemDetailsConstraint = [_itemDetails autoPinEdge:ALEdgeBottom toEdge:ALEdgeBottom ofView:cell.imageView];
        }

然后在scrollDidView

float scrollViewHeight = self.collectionView.frame.size.height;
    float scrollOffset = self.collectionView.contentOffset.y;

    if(_itemDetails){

        if (scrollOffset + scrollViewHeight < CGRectGetMaxY(_frontImageView.frame)){

            _itemDetailsConstraint.constant =  CGRectGetMaxY(_frontImageView.frame) - (scrollOffset + scrollViewHeight);

        }
        else{
            _itemDetailsConstraint.constant = 0;
        }
    }

    [_itemDetails.superview layoutIfNeeded];

尽管在调试时,我可以看到约束的常量已经改变,视图没有更新到新位置。

我也试过

[self.view layoutIfNeeded]

[self.collectionView layoutIfNeeded]

如何更新视图(_itemDetails,它指向CollectionViewCell)位置的视图?

1 个答案:

答案 0 :(得分:0)

[collectionView reloadData];

如果你的约束是在集合中创建或更新:cellForItemAtIndexPath :,你可以重新加载所有单元格。