在UICollectionView中创建单元格视图

时间:2013-01-26 07:12:21

标签: ios objective-c xcode uicollectionview

我在将新创建的视图放在UICollectionView单元格上时会遇到问题(并将其增长以填充屏幕)。当集合视图滚动到顶部时它很有效,但是当我滚动时,我无法正确放置新视图,因为我收集的浮点值低于窗口高度。

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    UIView *picturesView = [[UIView alloc] init];
    picturesView.frame = CGRectMake(CGRectGetMidX([[collectionView cellForItemAtIndexPath:indexPath] bounds]), CGRectGetMidY([[collectionView cellForItemAtIndexPath:indexPath] bounds]), 100, 100);

    [self.view addSubview:picturesView];

    [UIView animateWithDuration:0.3 animations:^{
        picturesView.frame = CGRectMake(0, 0, windowWidth, windowHeight);
        picturesView.alpha = 1.0;
    }];
}

这里的问题是CGRectMake的x和y参数中的值大于滚动后的可用窗口区域,并且视图显示在滚动剪辑下方(新创建的视图似乎从底部向上滑动)屏幕,这不是所需的动画。)

逻辑会让我通过positionY =((totalScrollHeight - topScrollAreaClipped)+ screenPositionOfCell来计算这些应该放在哪里。我似乎无法获得的唯一变量是滚动剪辑的UICollectionView的高度。

除非有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

您需要补偿UICollectionView的滚动位置。检查scrollOffsett属性,然后从x / y位置中减去该值,为UIView提供正确的框架。