iOS實(shí)現(xiàn)圖片輪播效果
本文實(shí)例為大家分享了IOS圖片輪播效果的實(shí)現(xiàn)過(guò)程,供大家參考,具體內(nèi)容如下
平時(shí)APP中的廣告位或者滾動(dòng)的新聞圖片等用到的就是圖片輪播這種效果,實(shí)現(xiàn)方式主要有兩種,一種ScrollView+ImageView,另一種則是通過(guò)CollectionView,今天總結(jié)的是ScrollView這種方式。
1.圖片輪播效果實(shí)現(xiàn)
主要實(shí)現(xiàn)思路是:根據(jù)圖片總數(shù)及寬高設(shè)置好ScrollView的大小,每切換一張圖片相當(dāng)于在ScrollView上進(jìn)行一個(gè)圖片寬度的移動(dòng)行為,并加入定時(shí)器,實(shí)現(xiàn)自動(dòng)輪播。
如圖所示,設(shè)置好ScrollView及PageControl,ScrollView的contentSize根據(jù)圖片數(shù)量確定,注意啟用pagingEnabled這個(gè)屬性,確保整頁(yè)移動(dòng),同樣pageControl也是根據(jù)圖片數(shù)量來(lái)確定,每一頁(yè)代表一張圖片。
圖片命名采用數(shù)字序號(hào)方式,方便使用,需要注意的是,pageControl是由0開(kāi)始的,也就是0對(duì)應(yīng)image1,1對(duì)應(yīng)image2...依次類(lèi)推
加載圖片并將準(zhǔn)備好的圖片在ScrollView里設(shè)置好位置,即將這些圖片一張緊挨著一張排列在ScrollView中。
通過(guò)ScrollView的代理方法,在ScrollView滾動(dòng)結(jié)束的時(shí)候根據(jù)contentOffset更新頁(yè)碼。
定時(shí)器設(shè)置,這里設(shè)置為每隔2秒滾動(dòng)更新一次,實(shí)際上就是每隔2秒更新一次頁(yè)碼,根據(jù)頁(yè)碼的變化,讓ScrollView跟著移動(dòng),每次移動(dòng)一張圖片的距離
這里還需要注意的是,由于加入定時(shí)器有自動(dòng)輪播的效果了,會(huì)與手動(dòng)拖拽ScrollView沖突,即手動(dòng)拖拽ScrollView過(guò)程時(shí)ScrollView可能自動(dòng)移動(dòng)更新圖片了,顯然這種效果是不符合用戶習(xí)慣的,這時(shí)需要在ScrollView的代理事件中進(jìn)行處理,即開(kāi)始拖拽ScrollView時(shí)停止定時(shí)器,拖拽結(jié)束后再開(kāi)啟定時(shí)器。
那到這里是不是就結(jié)束了呢?我們看看效果圖:
這里有兩個(gè)問(wèn)題:
(1)首先是移動(dòng)到最后一張圖片時(shí)無(wú)法移動(dòng)了,如果是制作APP的新特性頁(yè)面,這樣的滾動(dòng)效果已經(jīng)可以了,但如果在廣告位或者是滾動(dòng)新聞這些場(chǎng)景下這種效果是不夠好的,一般滾動(dòng)到最后一張圖片時(shí),繼續(xù)拖拽都會(huì)移動(dòng)到第一張圖片,實(shí)現(xiàn)一種滾動(dòng)循環(huán)效果。
(2)定時(shí)器自動(dòng)輪播圖片時(shí),確實(shí)圖片循環(huán)輪播了,但是仔細(xì)看會(huì)發(fā)現(xiàn),ScrollView是由最后一種圖片位置生硬得拉回到第一張圖片的位置,效果也不夠理想。
解決辦法,小編先留個(gè)懸念,在下面的一篇文章中會(huì)進(jìn)行解答,不要錯(cuò)過(guò)。
- iOS實(shí)現(xiàn)圖片輪播器
- 兩行IOS代碼實(shí)現(xiàn)輪播圖
- IOS使用UICollectionView實(shí)現(xiàn)無(wú)限輪播效果
- iOS開(kāi)發(fā)中使用UIScrollView實(shí)現(xiàn)圖片輪播和點(diǎn)擊加載
- IOS實(shí)現(xiàn)圖片輪播無(wú)限循環(huán)效果
- iOS實(shí)現(xiàn)帶有縮放效果的自動(dòng)輪播圖
- iOS實(shí)現(xiàn)無(wú)限循環(huán)輪播圖效果
- iOS實(shí)現(xiàn)輪播圖banner示例
- IOS圖片無(wú)限輪播器的實(shí)現(xiàn)原理
- iOS實(shí)現(xiàn)3D卡片式輪播效果
相關(guān)文章
IOS 開(kāi)發(fā)之UIView動(dòng)畫(huà)的實(shí)例詳解
這篇文章主要介紹了IOS 開(kāi)發(fā)之UIView動(dòng)畫(huà)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07iOS實(shí)現(xiàn)左右拖動(dòng)抽屜效果
這篇文章主要介紹了iOS實(shí)現(xiàn)左右拖動(dòng)抽屜效果,理解ios平臺(tái)類(lèi)似于QQ主頁(yè)面,利用觸摸事件滑動(dòng)touchesMoved實(shí)現(xiàn)的效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02iOS開(kāi)發(fā)實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼封裝
這篇文章主要介紹了iOS開(kāi)發(fā)實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼封裝,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08iOS11 SectionHeader 胡亂移動(dòng)且滑動(dòng)時(shí)出現(xiàn)重復(fù)內(nèi)容的解決方法
這篇文章主要介紹了iOS11 SectionHeader 胡亂移動(dòng)且滑動(dòng)時(shí)出現(xiàn)重復(fù)內(nèi)容的解決方法,需要的朋友可以參考下2017-11-11iOS ScrollView嵌套tableView聯(lián)動(dòng)滾動(dòng)的思路與最佳實(shí)踐
這篇文章主要給大家介紹了關(guān)于ScrollView嵌套tableView聯(lián)動(dòng)滾動(dòng)的思路與最佳實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10iOS通過(guò)攝像頭圖像識(shí)別技術(shù)分享
本篇文章給大家詳細(xì)講述了讓IOS開(kāi)發(fā)中通過(guò)攝像頭進(jìn)行圖像識(shí)別的相關(guān)技術(shù),對(duì)此有興趣的朋友參考學(xué)習(xí)下吧。2018-02-02Flutter CustomPaint自定義繪畫(huà)示例詳解
這篇文章主要為大家介紹了Flutter CustomPaint自定義繪畫(huà)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11iOS開(kāi)發(fā)中使用UIScrollView實(shí)現(xiàn)無(wú)限循環(huán)的圖片瀏覽器
這篇文章主要介紹了iOS開(kāi)發(fā)中使用UIScrollView實(shí)現(xiàn)無(wú)限循環(huán)的圖片瀏覽器的方法,感興趣的小伙伴們可以參考一下2016-03-03iOS藍(lán)牙設(shè)備名稱(chēng)緩存問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于iOS藍(lán)牙設(shè)備名稱(chēng)緩存問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09