import UIKit
let ImageViewCount = 3
class XGHomeHeadView: UIView {
var scrollView: UIScrollView?
var pageControl: UIPageControl?
var timer: NSTimer?
var banners: Array<AnyObject>? {
didSet {
pageControl?.numberOfPages = (banners?.count)!
pageControl?.currentPage = 0
updateContent()
}
}
override init(frame: CGRect) {
super.init(frame: frame)
setupScrollView()
startTimer()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupScrollView() {
scrollView = UIScrollView(frame: self.bounds)
scrollView?.showsVerticalScrollIndicator = false
scrollView?.showsHorizontalScrollIndicator = false
scrollView?.pagingEnabled = true
scrollView?.delegate = self
self.addSubview(scrollView!)
for _ in 0..<ImageViewCount {
let imgView = UIImageView()
imgView.userInteractionEnabled = true
imgView.contentMode = UIViewContentMode.ScaleAspectFill
imgView.clipsToBounds = true
let ges = UITapGestureRecognizer(target: self, action: #selector(imgViewDidClicked(_:)))
imgView.addGestureRecognizer(ges)
scrollView?.addSubview(imgView)
}
pageControl = UIPageControl()
self.addSubview(pageControl!)
scrollView?.contentSize = CGSizeMake(CGFloat(ImageViewCount)*self.bounds.width, 0)
let scrollWiewW = scrollView!.bounds.width
let scrollWiewH = scrollView!.bounds.height
for i in 0..<ImageViewCount {
let imgView = scrollView?.subviews[i]
imgView?.frame = CGRectMake(CGFloat(i) * scrollWiewW, 0, scrollWiewW, scrollWiewH);
}
let pageW: CGFloat = 80.0
let pageH: CGFloat = 20.0
pageControl?.frame = CGRectMake(0, 0, pageW, pageH)
pageControl?.center = CGPointMake(scrollWiewW/2, scrollWiewH-pageH/2)
}
func updateContent() {
for subView in (scrollView?.subviews)!.enumerate() {
var pageIndex:Int = (pageControl?.currentPage)!
let imgIndex = subView.index
let imgView = subView.element as! UIImageView
if imgIndex == 0 {
pageIndex -= 1
} else if imgIndex == 2 {
pageIndex += 1
}
if pageIndex < 0 {
pageIndex = (pageControl?.numberOfPages)!-1
} else if pageIndex >= pageControl?.numberOfPages {
pageIndex = 0
}
imgView.tag = pageIndex
let banner = banners![pageIndex] as! XGBanner
let image = UIImage(named: banner.image!)
imgView.image = image
}
scrollView?.contentOffset = CGPointMake(scrollView!.bounds.width, 0)
}
func startTimer() {
if timer == nil {
timer = NSTimer(timeInterval: 2.0, target: self, selector: #selector(nextImage), userInfo: nil, repeats: true)
NSRunLoop.currentRunLoop().addTimer(timer!, forMode: NSRunLoopCommonModes)
}
}
func nextImage() {
scrollView?.setContentOffset(CGPointMake(2*(scrollView?.bounds.width)!, 0), animated: true)
}
func stopTimer() {
timer?.invalidate()
timer = nil
}
func imgViewDidClicked(ges:UITapGestureRecognizer) {
let view = ges.view
print(view?.tag)
}
}
extension XGHomeHeadView: UIScrollViewDelegate {
func scrollViewDidScroll(scrollView: UIScrollView) {
var page = 0
var minDistance: CGFloat = CGFloat(MAXFLOAT)
for imgView in scrollView.subviews {
var distance: CGFloat = 0
distance = (imgView.frame.origin.x-scrollView.contentOffset.x)
distance = CGFloat(abs(Int(distance)))
if distance < minDistance {
minDistance = distance
page = imgView.tag
}
}
pageControl?.currentPage = page
}
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
updateContent()
}
func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {
updateContent()
}
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
stopTimer()
}
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
startTimer()
}
}
swift輪播圖
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門(mén)餐抢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)现使,“玉大人,你說(shuō)我怎么就攤上這事旷痕√夹猓” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵欺抗,是天一觀的道長(zhǎng)售碳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)绞呈,這世上最難降的妖魔是什么贸人? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮佃声,結(jié)果婚禮上艺智,老公的妹妹穿的比我還像新娘。我一直安慰自己圾亏,他們只是感情好十拣,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布封拧。 她就那樣靜靜地躺著,像睡著了一般夭问。 火紅的嫁衣襯著肌膚如雪泽西。 梳的紋絲不亂的頭發(fā)上,一...
- 那天缰趋,我揣著相機(jī)與錄音捧杉,去河邊找鬼。 笑死埠胖,一個(gè)胖子當(dāng)著我的面吹牛糠溜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播直撤,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蜕着!你這毒婦竟也來(lái)了谋竖?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤承匣,失蹤者是張志新(化名)和其女友劉穎蓖乘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體韧骗,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘉抒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了袍暴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片些侍。...
- 正文 年R本政府宣布耗式,位于F島的核電站,受9級(jí)特大地震影響趁猴,放射性物質(zhì)發(fā)生泄漏刊咳。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一儡司、第九天 我趴在偏房一處隱蔽的房頂上張望娱挨。 院中可真熱鬧,春花似錦枫慷、人聲如沸让蕾。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)探孝。三九已至笋婿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顿颅,已是汗流浹背缸濒。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像绍些,于是被迫代替她去往敵國(guó)和親捞慌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- swift 輪播圖無(wú)限滾動(dòng) 控件的封裝 這篇文章主要記錄自己是怎么一步一步封裝一個(gè) 輪播圖, 記錄了整個(gè)過(guò)程和遇到...
- 隨著現(xiàn)代科技的發(fā)展柬批,界面干凈啸澡、整潔已經(jīng)是最基本的要求了,所以輪播圖就出現(xiàn)啦氮帐!現(xiàn)在就來(lái)看看輪播圖的代碼吧 首先需要定...
- 最近在學(xué)習(xí)swift嗅虏,就用swift實(shí)現(xiàn)輪播圖來(lái)練習(xí)一下 輪播圖的創(chuàng)建有兩種方式: 顯然使用collectionV...
- 目標(biāo) :UIScrollView+三UIImageView的輪播圖實(shí)現(xiàn) 原理:利用UIScrollView實(shí)現(xiàn)輪播...