使用UICollectionView實現(xiàn)的swift輪播圖FYSliderView

使用UICollectionView實現(xiàn)的swift輪播圖FYSliderView

  • 帶有動畫效果的pageControl敢伸,可自定義pageControl元素之間的間距/大小/位置
  • 可自定義文字標題的字體大小/顏色/內(nèi)邊距
  • 有兩種風格的文字標題遮罩背景(漸變色背景/半透明背景)

項目結(jié)構(gòu)


目錄說明

├── FYSliderView  #核心庫文件夾绍刮,如果不使用 CocoaPods 集成,請直接將這個文件夾拖拽帶你的項目中
    └── FYSliderView.swift 核心類
    └── FYPageControl.swift 自定義的PageControl
    └── FYAnimatedLayer.swift 組成pageControl元素的圖層
    └── FYSliderViewCustomizable.swift 參數(shù)配置

使用FYSliderView


第一步:使用CocoaPods導入FYSliderView

Podfile中進行如下導入:

pod 'FYSliderView'

然后使用cocoaPods進行安裝

第二步:遵守FYSliderViewCustomizable協(xié)議陶因,并在初始化方式中指定為自己

class ViewController: UIViewController,FYSliderViewCustomizable {
    var sliderView:FYSliderView!
    func setupSliderView(){
        sliderView = FYSliderView(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: 200),option:self)
        view.addSubview(sliderView)
    }
}

第三步:為sliderView指定數(shù)據(jù)源

//聲明成員變量
var dataSource:[FYImageObject]!

//請求數(shù)據(jù),存到dataSource數(shù)組中
…

//指定為數(shù)據(jù)源
sliderView.imageObjectGroup = dataSource
 

第四步:指定代理,實現(xiàn)當點擊圖片會觸發(fā)回調(diào)方法(可選的)

//指定代理對象為self
sliderView.delegate = self

//遵守協(xié)議FYSliderViewDelegate柄沮,代理方法如下
extension ViewController:FYSliderViewDelegate{
    //輪播圖滾動過程中會觸發(fā)此方法,檢索位置
    func sliderView(didScrollToIndex index: Int) {
        print("滾到了\(index)")
    }
    //用戶點擊圖片废岂,檢索位置
    func sliderView(didSelectItemAtIndex index: Int) {
        print("點了\(index)")
    }
}

參數(shù)說明

    //默認背景圖
    var placeholderImage:UIImage 
    
    //是否需要無限循環(huán)
    var infiniteLoop:Bool 
    
    //是否自動滾動
    var autoScroll:Bool 
    
    //默認滾動間隔時間
    var scrollTimeInterval:NSTimeInterval 
    
    //滾動方向
    var scrollDirection:UICollectionViewScrollDirection 
    
    //圖片的填充方式
    var imageContentMode:UIViewContentMode  
    
    //只有一個元素時就隱藏pageControl
    var hidesForSinglePage:Bool 
    
    //分頁控件的類型
    var controlType:FYPageControlType
    
    //文字背景遮罩樣式
    var maskType:FYSliderCellMaskType
    
    //文字樣式
    var titleStyle:FYTitleStyle

1.pageControl相關(guān)


其中分頁控件的類型有:

  • custom 自定義有動畫效果的pageControl(默認)
  • system 使用系統(tǒng)自帶的pageControl

效果如圖

  • custom
    custom
  • system
    system

使用方法:

1.在ViewController類中,只需重寫controlType屬性祖搓,將返回值改為.system并按照參數(shù)要求補齊完整即可切換成系統(tǒng)樣式

var controlType:FYPageControlType{
    return .system(currentColor: UIColor(red: 1, green: 1, blue: 1, alpha: 1),
                   normalColor:UIColor(red: 1, green: 1, blue: 1, alpha: 0.8),
                   point:(x:.centerX,y:.bottom(10)))
}

2.你想改變動畫樣式的pageControl元素之間的間距或者大小,僅僅只需重寫controlType屬性湖苞,將返回值改為.custom并按照參數(shù)要求補齊完整即可

var controlType:FYPageControlType{ 
    return .custom(currentColor: UIColor(red: 1, green: 1, blue: 1, alpha: 1),
                   normalColor:UIColor(red: 1, green: 1, blue: 1, alpha: 0.8),
                   layout:[.point(x:.right(10), y:.bottom(16)),
                           .size(borderWidth:2,circleWidth:10),
                           .margin(12)
                                ])        
}

3.如果我不想要pageControl了拯欧,想把它隱藏掉,那么只需要這樣就可以

var controlType:FYPageControlType{
    return .none
}

4.我想自定義pageControl的位置财骨,如果我用的是系統(tǒng)的pageControl的話镐作,我只需要改變參數(shù)point的值即可,它分為x軸和y軸隆箩,
x軸方向可表示為:

  • .left(20) 到sliderView試圖左邊距離20個單位
  • .centerX 相對于sliderView水平居中
  • .right(10)到sliderView試圖右邊距離10個單位

y軸方向可表示為:

  • .top(10) 到sliderView試圖頂部距離10個單位
  • .centerY 相對于sliderView垂直居中
  • .bottom(20)到sliderView試圖底部距離20個單位

效果如圖

  • 右下角顯示
    右下角顯示
  • 水平垂直居中
    水平垂直居中

2.帶文字效果的輪播圖该贾,介紹關(guān)于遮罩視圖的不同選擇樣式


其中遮罩試圖的類型有:

  • translucent 半透明
  • gradient 漸變色(默認)

效果如圖

  • 半透明
    半透明
  • 漸變背景色
    漸變背景色

使用方法:
1、設(shè)置成為漸變色的遮罩樣式

var maskType:FYSliderCellMaskType{
    return .gradient(backgroundColors: [UIColor(red: 0, green: 0, blue: 0, alpha: 0),
                                        UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)],
                     offsetY: 100)
}

2捌臊、設(shè)置成為半透明的遮罩樣式

var maskType:FYSliderCellMaskType{
    return .translucent(backgroundColor:UIColor(red: 0, green: 0, blue: 0, alpha: 0.5))
}

注:如果傳入數(shù)據(jù)源中的title字段為空杨蛋,將不再顯示遮罩背景

3.帶文字效果的輪播圖,介紹關(guān)于設(shè)置文字標題的字體大小/內(nèi)邊距/字體顏色


var titleStyle:FYTitleStyle{
    return [.fontSize(16)]
}

注:返回的是數(shù)組樣式理澎,數(shù)組元素存在枚舉類型FYTitleLabelStyle中逞力,可傳入多個或單個例如:

//我想改變字體大小和字體顏色:
var titleStyle:FYTitleStyle{
    return [.fontSize(16),textColor(UIColor.redColor())]
}

結(jié)語

將FYSliderView導入到工程項目中以后,開發(fā)者需將輪播圖的占位圖添加到項目圖片目錄下矾端,可將占位圖的圖片資源名稱命名為fy_placeholderImage或重寫var placeholderImage:UIImage屬性掏击。如果開發(fā)者導入占位圖資源圖片到項目中,輪播圖的占位圖會替換成一張繪制而成的灰色背景圖

有任何疑問請到個人博客留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秩铆,一起剝皮案震驚了整個濱河市砚亭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殴玛,老刑警劉巖捅膘,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滚粟,居然都是意外死亡寻仗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門凡壤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來署尤,“玉大人耙替,你說我怎么就攤上這事〔芴澹” “怎么了俗扇?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長箕别。 經(jīng)常有香客問我铜幽,道長,這世上最難降的妖魔是什么串稀? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任除抛,我火速辦了婚禮,結(jié)果婚禮上母截,老公的妹妹穿的比我還像新娘到忽。我一直安慰自己,他們只是感情好清寇,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布绘趋。 她就那樣靜靜地躺著,像睡著了一般颗管。 火紅的嫁衣襯著肌膚如雪陷遮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天垦江,我揣著相機與錄音帽馋,去河邊找鬼。 笑死比吭,一個胖子當著我的面吹牛绽族,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衩藤,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吧慢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赏表?” 一聲冷哼從身側(cè)響起检诗,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓢剿,沒想到半個月后逢慌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡间狂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年攻泼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡忙菠,死狀恐怖何鸡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牛欢,我是刑警寧澤音比,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站氢惋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏稽犁。R本人自食惡果不足惜焰望,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望已亥。 院中可真熱鬧熊赖,春花似錦、人聲如沸虑椎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捆姜。三九已至传趾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泥技,已是汗流浹背浆兰。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留珊豹,地道東北人簸呈。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像店茶,于是被迫代替她去往敵國和親蜕便。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫贩幻、插件轿腺、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,096評論 4 62
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,756評論 22 665
  • 修行的真正目的,是學會控制自心丛楚,使心不受外在事物的操控吃溅。就好比我們看電影,因為知道它是假的鸯檬,所以即使會動感情决侈,也能...
    Angela周安琪閱讀 908評論 0 0
  • 待過幾家企業(yè),都是民營企業(yè),雖然有的已經(jīng)上市赖歌,有的進入了民企100強枉圃,但都有一個特點,強調(diào)企業(yè)的“家”文化庐冯,都有類...
    承謙閱讀 628評論 0 1