SwiftUI實戰(zhàn)之輪播圖組件實現(xiàn)自動切換圖片(教程含源碼)

本文價值與收獲

看完本文后,您將能夠作出下面的界面

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

3、 制作單獨頁面用于存儲照片

還有 54% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
支付 ¥4.99 繼續(xù)閱讀

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容