2017-03-26 3 views
0

私はちょっとジレンマに陥っています。コレクションビューを取得して、ユーザーがどちらのイメージを見つけようとしています変数xは、collectionviewcontentsize/view.frame.widthと同じです。さて、私はif文を作成し、イメージがイメージ0より上にあるかどうかを確認しました。今、私は他のコードを書く前に修正しようとしています。私の問題は、画像が最終的に2に達する前にprint(x)を1回40回印刷すると言うときです。ああ、このコレクションビューには、ほとんどの画面を塗りつぶす画像があり、ページングが有効な状態で水平スクロールしています。だから私は誰かが画像ごとに1つの数字だけを出力するのを助けることができるかどうか疑問に思っていた。ここで問題を見るのに良い画像です。enter image description here出力で一度に1つのintを生成するためにスローで丸めた数字

その画像では、次の画像または1番目の画像(collectionviewの2番目)にスクロールしました(img 1は0とみなされます)。コメント内で質問をしたり、混乱した場合は質問してください。みんなありがとう!

+0

あなたが実際のコードではなく、コードのスクリーンショット:) – Fahim

+0

を投稿する場合、それは簡単ですですから、scrollViewDidScrollに現在どの画像が表示されているのでしょうか? –

+0

出力を含むようにしました – Nivix

答えて

1

現在の番号を保持する変数を設定し、番号が変更された場合にのみ番号を出力することができます。あなたのクラスの先頭に変数を定義します。

あなた scrollViewDidScrollで次に
var currentImage = 0 

、次の手順を実行します。

func scrollViewDidScroll(_ scrollView:UIScrollView) { 
    let x = floor(myCollectionView.contetOffset.x/view.frame.width) 
    if Int(x) != currentImage { 
     currentImage = Int(x) 
     print(currentImage) 
    } 
} 
+0

それは私がscrollview func – Nivix

+0

の外に置いたことを確かに働かせたことはありませんでした。なぜ、var currentimageを関数の外に置くのがこのような違いを作りますか?私は正しい答えとして受け入れるでしょう。 – Nivix

+0

コードが実行されるたびに 'currentImage'を0として定義しているので、' scrollViewDidScroll'が呼ばれるたびに 'currentImage'を0に設定します。メソッドとそれはあなたがいつも!=条件を満たしていることを意味します... – Fahim

関連する問題