本文價值與收獲
看完本文后,您將能夠作出下面的界面

image.png

Jietu20200408-195745.gif
看完本文您將掌握的技能
- 掌握頁面切換
- 掌握手勢控制
- 掌握定時器
解決方案
1、使用定時器解決切換問題(如果掌握可以跳過)
iOS帶有內(nèi)置的Timer類,使我們可以定期運行代碼。它使用來自Apple框架稱為Combine的發(fā)布者系統(tǒng)。實際上,在本系列的許多應(yīng)用中,我們實際上一直在使用Combine的一部分,盡管您不太可能注意到它。例如,@ Published屬性包裝器和ObservableObject協(xié)議都來自Combine,但是我們不需要知道,因為當(dāng)您導(dǎo)入SwiftUI時,我們也會隱式地導(dǎo)入Combine的一部分。
Apple的核心系統(tǒng)庫稱為Foundation,它為我們提供了諸如Data,Date,NSSortDescriptor,UserDefaults之類的功能。它還為我們提供了Timer類,該類旨在在一定的秒數(shù)后運行函數(shù),但它也可以重復(fù)運行代碼。 Combine對此添加了擴(kuò)展,以便計時器可以成為發(fā)布者,這些發(fā)布者會在其值更改時宣布。這是@Published屬性包裝器的名稱來源,計時器發(fā)布者以相同的方式工作:達(dá)到您的時間間隔時,Combine將發(fā)出包含當(dāng)前日期和時間的公告。
創(chuàng)建計時器發(fā)布者的代碼如下所示:
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
我們可以用下面方式接收切換:
Text("Hello, World!")
.onReceive(timer) { time in
print("The time is now \(time)")
}
2、使用取模操作實現(xiàn)循環(huán)切換
通過Timer我們實現(xiàn)了每秒調(diào)用一次,但是如何循環(huán)播放呢?也就是從第一張照片按照順序展示,然后再從第最后一張返回第一張。
要實現(xiàn)上面的需求,我們要用的swift中的%操作了,具體代碼如下:
self.index = (self.index+1) % 5