我在将新创建的视图放在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的高度。
除非有更好的方法来做到这一点。
答案 0 :(得分:0)
您需要补偿UICollectionView
的滚动位置。检查scrollOffsett
属性,然后从x / y位置中减去该值,为UIView
提供正确的框架。