iOS開發專案實戰——Swift實現圖片輪播與瀏覽
最近開始開發一個新的iOS應用,自己決定使用Swift,進行了幾天之後,發現了一個很嚴峻的問題,那就是不管是書籍,還是網路資源,關於Swift的實在是太少了,隨便一搜全都是OC實現某某某功能。就算是找到Swift的資源,一看,大概是半年前的程式碼,或是一年前的程式碼,一執行,全都報錯。這是由於畢竟Swift還是在不斷髮展完善當中,隨著Swift2.0的開源以來,包括髮布Swift這一年多以來,Swift的改動還是很大的,很多的介面或是語法前後有較大差異。有些功能只能自己硬生生看官方文件或擠破腦子想,甚是痛苦。
基於以上現實原因,也以便以後大家的Swift開發,我把自己在Swift上實現的一些實戰型功能分享給大家,希望減少大家上網檢索的時間。我的開發環境是OS X 10.10.3,Xcode版本是Version 6.4 (6E35b),建立的專案SDK預設是 iOS SDK 8.4.
這次我們要使用Swift實現圖片的迴圈播放並可以使用手指進行左右滑動瀏覽圖片。具體實現如下:
(1)建立一個基於Swift的iOS專案,開啟Main.storyboard,在介面中拖入一個ScrollView滾動檢視,用來顯示圖片,在ScrollView下面再放置一個Page Control頁面控制,可以來提示當前是哪一張圖片,介面設計如圖:
。
(2)實現控制元件與程式碼的繫結,按住右鍵拖動控制元件到程式碼中,選擇Outlet,類似生成程式碼如下:
@IBOutlet weak var galleryScrollView: UIScrollView! // 實現圖片輪播的滾動;
@IBOutlet weak var galleryPageControl: UIPageControl! //提示當前滾動的圖片,指示器;
(3)拖動幾張圖片到Images.xcassets中,本例子拖動5張圖片,名字分別為gallery1.....gallery5.
(4)在類內定義一個NSTimer型別的定時器:
var timer:NSTimer!
(5)實現圖片滾動的方法pictureGallery(),程式碼如下:
func pictureGallery(){ //實現圖片滾動播放;
//image width
let imageW:CGFloat = self.galleryScrollView.frame.size.width;//獲取ScrollView的寬作為圖片的寬;
let imageH:CGFloat = self.galleryScrollView.frame.size.height;//獲取ScrollView的高作為圖片的高;
var imageY:CGFloat = 0;//圖片的Y座標就在ScrollView的頂端;
var totalCount:NSInteger = 5;//輪播的圖片數量;
for index in 0..<totalCount{
var imageView:UIImageView = UIImageView();
let imageX:CGFloat = CGFloat(index) * imageW;
imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);//設定圖片的大小,注意Image和ScrollView的關係,其實幾張圖片是按順序從左向右依次放置在ScrollView中的,但是ScrollView在介面中顯示的只是一張圖片的大小,效果類似與畫廊;
let name:String = String(format: "gallery%d", index+1);
imageView.image = UIImage(named: name);
self.galleryScrollView.showsHorizontalScrollIndicator = false;//不設定水平滾動條;
self.galleryScrollView.addSubview(imageView);//把圖片加入到ScrollView中去,實現輪播的效果;
}
//需要非常注意的是:ScrollView控制元件一定要設定contentSize;包括長和寬;
let contentW:CGFloat = imageW * CGFloat(totalCount);//這裡的寬度就是所有的圖片寬度之和;
self.galleryScrollView.contentSize = CGSizeMake(contentW, 0);
self.galleryScrollView.pagingEnabled = true;
self.galleryScrollView.delegate = self;
self.galleryPageControl.numberOfPages = totalCount;//下面的頁碼提示器;
self.addTimer()
}
(6)實現圖片迴圈播放的方法nextImage():
func nextImage(sender:AnyObject!){//圖片輪播;
var page:Int = self.galleryPageControl.currentPage;
if(page == 4){ //迴圈;
page = 0;
}else{
page++;
}
let x:CGFloat = CGFloat(page) * self.galleryScrollView.frame.size.width;
self.galleryScrollView.contentOffset = CGPointMake(x, 0);//注意:contentOffset就是設定ScrollView的偏移;
}
(7)要在當前類中實現一個委託UIScrollViewDelegate,並實現一個方法scrollViewDidScroll(),程式碼如下:
//UIScrollViewDelegate中重寫的方法;
//處理所有ScrollView的滾動之後的事件,注意 不是執行滾動的事件;
func scrollViewDidScroll(scrollView: UIScrollView) {
//這裡的程式碼是在ScrollView滾動後執行的操作,並不是執行ScrollView的程式碼;
//這裡只是為了設定下面的頁碼提示器;該操作是在圖片滾動之後操作的;
let scrollviewW:CGFloat = galleryScrollView.frame.size.width;
let x:CGFloat = galleryScrollView.contentOffset.x;
let page:Int = (Int)((x + scrollviewW / 2) / scrollviewW);
self.galleryPageControl.currentPage = page;
}
(8)設定一個定時器:
func addTimer(){ //圖片輪播的定時器;
self.timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "nextImage:", userInfo: nil, repeats: true);
}
(9)最後的實現效果如下:
。
。
希望Swift會變得越來越好,我們放心的去學習Swift吧,未來一定會大放異彩的。
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!
相關文章
- JavaScript實戰專案:移動端 Touch 輪播圖JavaScript
- ViewFlipper探索與使用——順便實現Android圖片輪播ViewAndroid
- 用原生js實現圖片輪播器JS
- Android 和 iOS 圖片輪播AndroidiOS
- JQuery實現圖片輪播無縫滾動jQuery
- 手機瀏覽器不能顯示輪播圖或是其他圖片瀏覽器
- ViewPage實現輪播圖View
- Banner實現輪播圖
- js實現輪播圖JS
- 實現簡單的輪播圖(單張圖片、多張圖片)
- 直播app開發,首頁輪播圖效果實現APP
- spring boot+bootstrap實現動態輪播圖實戰Spring Boot
- jQuery實現3D圖片輪播詳解jQuery3D
- 用原生JS實現 圖片輪播切換 功能JS
- Flutter上線專案實戰——圖片視訊預覽Flutter
- 原生js實現輪播圖JS
- web前端入門到實戰:簡單的圖片輪播Web前端
- Vue專案中使用better-scroll實現一個輪播圖Vue
- GO專案實戰—開發上傳圖片功能 【20220527更新】Go
- 文字輪播與圖片輪播?CSS 不在話下CSS
- 原生JS實現輪播圖--第一章圖片展示JS
- java學習---前端---使用JavaScript和jQuery實現圖片輪播圖前端JavaScriptjQuery
- 兩種方式實現輪播圖
- 一個基於Vue的圖片輪播元件的實現Vue元件
- 直播平臺搭建原始碼,bootstrap實現圖片輪播效果原始碼boot
- 原生JS實現輪播圖的效果JS
- vue元件之輪播圖的實現Vue元件
- 用CSS實現一個輪播圖CSS
- [分享會]只用CSS實現輪播圖CSS
- 直播平臺製作,依靠C語言實現圖片輪播C語言
- 小冊上新:Taro 多端開發實現原理與專案實戰
- 閒雲旅遊專案開發-(第一篇:使用Element-ui實現主頁輪播圖)UI
- vue專案中使用swiper實現中間大,兩邊小的輪播圖Vue
- 短視訊軟體開發,實現簡單的輪播圖效果
- 直播app開發,實現輪播圖上下自動滑動展示效果APP
- vue實現圖片預覽Vue
- 網頁佈局------輪播圖效果實現網頁
- vue元件之路之輪播圖的實現Vue元件
- 直播平臺開發,使用swiper實現輪播效果