0

カスタム レイアウトの UICollectionView があり、装飾ビューを表示しようとしています。

いくつかのコードで示された問題:

attributeDecorationTime.frame = CGRectMake(0.0f,
                                           0.0f,
                                           [self getXOffset],
                                           (epgCollectionView.bounds.size.height+epgCollectionView.contentOffset.y));

このコードは、[self getXOffest] 値が画面の中央にある場合、画面を 2 つに分割する装飾ビューを表示することになっています。左側は装飾ビューで、右側には装飾ビューによって隠されていない半分のコレクション ビューが表示されます。

iPhoneシミュレーターでは、最初は期待どおりに動作していますが、少し下にスクロールし始めると、装飾ビューの下部が表示されます。装飾ビューの下部を表示したくありません。装飾ビューは常に画面の高さをカバーする必要があります。

私がepgCollectionView.contentOffset.y * 2を作成すると、うまくいくように見えます.おそらく網膜スクリーンに関連していますか?しかし、それが網膜@2xピクセルの問題である場合、なぜそれが画面を覆うのですか???

今、このコードを使用すると:

attributeDecorationTime.frame = CGRectMake(0.0f,
                                           epgCollectionView.contentOffset.y,
                                           [self getNowXOffset],
                                           (epgCollectionView.bounds.size.height+epgCollectionView.contentOffset.y));

コレクションビューを下にスクロールすると、装飾ビューが下にスクロールします。

それが何を意味するのかを正しく理解すると、装飾ビューは通常のセルまたはヘッダーセルと同じ xy を使用しません。

ここで、ipad シミュレーターで最初のコードを実行すると、y=0 にあるはずの装飾ビューが、メイン ビュー コントローラーのコレクション ビューの y 位置である y=74 から開始されます。

誰かが私が間違っていることを説明できますか???

iphone/ipadの画面の高さ全体をカバーする装飾ビューが欲しいだけです。

一方で、装飾ビューの幅である x 値に問題はありません。これは、属性を変更するときにビューを無効にする必要があると思いますか? カスタム レイアウトは、スクロールごとに属性を再計算します。また、カスタム レイアウトの [self invalidateLayout] は何も変更されていないようです。

4

1 に答える 1