新しく作成したビューを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の高さです。
これを行うためのより良い方法がない限り。