2017-01-15 16 views
0

礼拝を作成するために、NSTimerを使用する方法正しく自動スライドショー

私はまだ、私は特定の他人が何をしようとしているよと私の検索クエリは、おそらく間違って文言されている可能性があり、この序文を許可し、私はそれを見つけることができません。私はさまざまな方法を見てきましたが、本当にうまくいきませんでした。次のように

だから私の現在のコードは次のとおりです。

while true { 
    currentPicture += 1; //Yes I know that ; is not needed, i come from Java so I      find it comforting. 
    showPico(); //function which shows an image from my array of images, this function handles out of bounds by reseting currentPic to 0 or 4. 
    sleep(2); 
} 

今私の問題は、私は私のオートボタンを押したら、上記の私のコードが置かれている場所であるということです、もちろん私のアプリがフリーズします。 sleep()はメインスレッドを呼び出し、スリープ状態になるまですべてを一時停止します。しかし、私はそれが全く絵を更新していないと思う。したがって、スライドショーの種類を作成するために行くための最善の方法は何ですか。

次のように画像の配列は思ってそれらのために、定義されています

var pictureArray = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"]; //I know, highly original names. 

サイドノート:SWIFT/iOS搭載の私の知識は今4日間の総計です。

+0

を、そして何をスライドショーに期待している画像の最大量は、scrollViewになります/コレクションビュー。 CollectionViewたとえば、セルをビューのフルスクリーンにし、それにimageViewを割り当て、スクロール/ userInteractionを無効にしてから、一定時間後に次のindexPathにスクロールします。具体的にはタイマーを設定し、手動でcollectionViewをスクロールする方法を学ぶことはたくさんあります。SOを探すのは簡単でしょう – JustinM

答えて

1

:あなたが最も快適に感じる内容に応じて

var timer: Timer! 

func viewDidLoad() { 
    super.viewDidLoad() 
    timer = Timer.scheduledTimer(timeInterval: 0.1, 
           target: self, 
           selector: #selector(self.updateTime), 
           userInfo: nil, 
           repeats: true) 
} 


func updateTime() { 
    print("whatever is here happens every 0.1 seconds") 
} 

func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    timer.invalidate() 
} 
+0

私はすぐにこのコードを渦巻きにしますが、viewWillDisappearの目的は何ですか? viewDidLoad()メソッドのどこにでも呼び出されているとは思えませんが、滑らかなアニメーションと関係していると思いますか?何か不足していますか? – SomeStudent

+0

これはライフサイクルの方法です。特定のことが起こると、それらが引き起こされます。この場合、ビューコントローラがロードされると、viewDidLoadのコードが呼び出されます。ビューが表示されなくなったら、タイマーを無効にしてタイマーがバックグラウンドで実行されないようにします。 #selector(self.updateTime)は、scheduleTimer関数に従って、0.1秒ごとにupdateTime()メソッドを使用するようにTimerに指示します。これをチェックしてください:https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/index.html#//apple_ref/doc/uid/TP40007457 –

+0

Gotcha、意味があります。非常にうまく動作します、ありがとうございます。迅速なフォローアップを実行するには、実行を中止する最善の方法があります。次の/前のボタンを使用して、手動でスライドショーを自分で実行したいとします。乾杯! – SomeStudent

0

あなたもこれを行う必要はありません、コントロールUIPagingViewControllerは既に自動実行中のスライドショーをサポートしています。

この質問の詳細:Is it possible to Turn page programmatically in UIPageViewController?。あなたはおそらくあなたのビューコントローラでは、このような何かしたい

関連する問題