2

新しく作成したビューを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の高さです。

これを行うためのより良い方法がない限り。

4

1 に答える 1

0

のスクロール位置を補正する必要がありますUICollectionView。プロパティを確認し、scrollOffsettその値を x/y 位置から差し引いて、 の正しいフレームを取得しますUIView

于 2013-01-26T07:37:26.837 に答える