Objective-C UI之自定義輪播圖控件

下面我們自定義一個(gè)輪播圖類ImageLoop繼承于UIView,類ImageLoop中包含一個(gè)UIScrollView和UIPageControl,其中定義三個(gè)屬性:
pageControll,position,currentPage可以自定義pageControl樣式,也可以使用position控制播放方向,或者設(shè)置從下標(biāo)為currentPage的圖片開始播放
下面是ImageLoop的接口文件:

#import <UIKit/UIKit.h>

typedef enum{Left,Right} Position;

@interface ImageLoop : UIView

@property (nonatomic,retain)UIPageControl *pageControll;
@property (nonatomic,assign)Position position;
@property (nonatomic,assign)NSInteger currentPage;

- (instancetype)initWithFrame:(CGRect)frame imageArray:(NSMutableArray *)array position:(Position)position;

@end

在初始化方法中初始化所有控件,除了pageControl,還有scrollView、三個(gè)UIImageView,一個(gè)計(jì)時(shí)器timer
此demo輪播的思路是利用三個(gè)UIImageView分別代表顯示的圖片,和顯示的圖片的左邊以及顯示的圖片的右邊,通過不斷設(shè)置三個(gè)imageView的UIImage達(dá)到輪播的效果,當(dāng)scrollView滑動(dòng)到右邊的時(shí)候,設(shè)置中間和左邊的圖片為下一張圖片(注意邊界問題),然后讓scrollView滑動(dòng)到中間,接著設(shè)置右邊的圖片為當(dāng)前的圖片的下一張(同樣注意邊界問題),如此重復(fù)就可以達(dá)到循環(huán)播放了
因?yàn)榭丶锇粋€(gè)計(jì)時(shí)器timer,所以當(dāng)手勢滑動(dòng)時(shí),要停止計(jì)時(shí)器,圖片切換成功后就重新創(chuàng)建一個(gè)timer重新計(jì)時(shí),同樣,設(shè)置當(dāng)前的圖片currentPage時(shí),要先停止計(jì)時(shí)器,之后再重新啟動(dòng)。設(shè)置方向時(shí),定時(shí)器也會(huì)停止,然后重新根據(jù)方向和timer進(jìn)行播放。

下面是demo的下載鏈接:
ImageLoop


轉(zhuǎn)載請注明:作者SmithJackyson

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

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

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