[解決済み] targetContentOffsetForProposedContentOffset:withScrollingVelocity を UICollectionViewFlowLayout のサブクラス化せずに作成する。
質問
私のアプリには非常にシンプルなcollectionViewがあります(正方形のサムネイル画像が一列に並んでいるだけです)。
私は、オフセットが常に左側に完全な画像を残すように、スクロールをインターセプトしたいと思います。 現時点では、どこまでもスクロールし、切り取られた画像を残します。
とにかく、私は関数を使用する必要があることを知っています。
- (CGPoint)targetContentOffsetForProposedContentOffset:withScrollingVelocity
を使うことができますが、私は標準的な
UICollectionViewFlowLayout
. サブクラス化してません。
をサブクラス化せずに、これを傍受する方法はないでしょうか?
UICollectionViewFlowLayout
?
ありがとうございます。
どのように解決するのですか?
OK、答えはノーです。UICollectionViewFlowLayoutをサブクラス化しない限り、これを行う方法はありません。
しかし、それをサブクラス化することは、将来これを読んでいる人のために信じられないほど簡単です。
最初に私はサブクラスの呼び出しをセットアップしました
MyCollectionViewFlowLayout
を設定し、インターフェース・ビルダーでコレクション・ビュー・レイアウトをカスタムに変更し、フロー・レイアウト・サブクラスを選択しました。
この方法だと、IBでアイテムのサイズなどを指定できないので、MyCollectionViewFlowLayout.mで以下のようにしています...
- (void)awakeFromNib
{
self.itemSize = CGSizeMake(75.0, 75.0);
self.minimumInteritemSpacing = 10.0;
self.minimumLineSpacing = 10.0;
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.sectionInset = UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0);
}
これは、私のためにすべてのサイズとスクロールの方向を設定します。
次に ...
- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity
{
CGFloat offsetAdjustment = MAXFLOAT;
CGFloat horizontalOffset = proposedContentOffset.x + 5;
CGRect targetRect = CGRectMake(proposedContentOffset.x, 0, self.collectionView.bounds.size.width, self.collectionView.bounds.size.height);
NSArray *array = [super layoutAttributesForElementsInRect:targetRect];
for (UICollectionViewLayoutAttributes *layoutAttributes in array) {
CGFloat itemOffset = layoutAttributes.frame.origin.x;
if (ABS(itemOffset - horizontalOffset) < ABS(offsetAdjustment)) {
offsetAdjustment = itemOffset - horizontalOffset;
}
}
return CGPointMake(proposedContentOffset.x + offsetAdjustment, proposedContentOffset.y);
}
これにより、左側の端に5.0のマージンをとってスクロールが終了するようになります。
必要なことはこれだけです。コードでフローレイアウトを設定する必要は全くありませんでした。
関連
-
[解決済み】「推奨アイコンファイルがありません - バンドルには、ちょうど「120x120」ピクセル、.png 形式の iPhone / iPod Touch 用のアプリアイコンが含まれていません。
-
[解決済み] NSDictionaryをNSDataに、またはNSDataをNSDictionaryに変換するにはどうすればよいですか?
-
[解決済み] 指定されたエンタイトルメント...プロファイルです。(0xE8008016)と表示されました。エラー iOS 4.2
-
[解決済み] リンカーフラグ -ObjC は何をするのですか?
-
[解決済み] iphoneシミュレーターでキーボードを使うにはどうしたらいいですか?
-
[解決済み] UIImageViewのコーナー半径の設定がうまくいかない
-
[解決済み] AppDelegate.mで画面上に現在表示されているUIViewControllerを取得する。
-
[解決済み] カメラロールに画像を保存する方法を教えてください。
-
[解決済み] iPhoneでテキスト入力のポップアップダイアログボックスを表示する簡単な方法は?
-
[解決済み] iPhoneでNSStringをAES暗号化する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] hw.machine」識別子の信頼性を確認する方法は?
-
[解決済み] iOSの配布証明書の正しい更新方法
-
[解決済み] APNSの.pemファイルを作成する?
-
[解決済み] UITableViewCellのサブビューがセルを選択すると消えてしまう
-
[解決済み] iOSでHTMLをNSAttributedStringに変換する
-
[解決済み] モバイルSafari(iPhone)でテキストエリアのインナーシャドウを除去する
-
[解決済み] Xcode 4.2 - '...' の宣言は、この関数の外では表示されません 警告
-
[解決済み] アプリを提出する前にitunesのリンクを取得する
-
[解決済み] UITableViewのセクションヘッダーのデフォルトの高さ
-
[解決済み] UICollectionViewを画面ではなくセルでページングする