之前一直做的項目都是基於OC開發的,最近開始嘗試使用Swift語言來重寫整個項目。
本篇文章主要是講述如何使用Swift來實現常見的通用App安裝引導界面。
效果預覽:
實現思路:
主要是采用了UIScrollView作為容器,將其ContentSize的寬度設置為(引導頁數量)*屏幕寬度,並將pagingEnabled設為true,隱藏滾動條。作為指示的UIPageControl與UIScrollView直接添加到self.view之上,並保存UiPageControl居於最上。
實現代碼:
import UIKit class YSYGuideViewController: UIViewController,UIScrollViewDelegate { var scrollView:UIScrollView! var pageControl:UIPageControl! var startBtn:UIButton! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. loadCustomLayout() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //scrollview委托 func scrollViewDidScroll(scrollView: UIScrollView) { var offset=scrollView.contentOffset pageControl.currentPage=Int(offset.x/Yunshouyi.SCREEN_WIDTH) if(pageControl.currentPage==2){ startBtn.hidden=false }else{ startBtn.hidden=true } } //載入自定義布局 func loadCustomLayout(){ scrollView=UIScrollView(frame: CGRectMake(0, 0, Yunshouyi.SCREEN_WIDTH, Yunshouyi.SCREEN_HEIGHT)) scrollView.pagingEnabled=true scrollView.showsHorizontalScrollIndicator=false scrollView.showsVerticalScrollIndicator=false scrollView.contentSize=CGSizeMake(3*Yunshouyi.SCREEN_WIDTH, Yunshouyi.SCREEN_HEIGHT) for i in 1...4{ var image=UIImage(named: "Guideline-\(i)") var imageView=UIImageView(image: image) imageView.frame=CGRectMake(CGFloat((i-1))*Yunshouyi.SCREEN_WIDTH, 0, Yunshouyi.SCREEN_WIDTH, Yunshouyi.SCREEN_HEIGHT) imageView.contentMode = UIViewContentMode.ScaleToFill scrollView.addSubview(imageView) } pageControl=UIPageControl(frame: CGRectMake(Yunshouyi.SCREEN_WIDTH/2-100, Yunshouyi.SCREEN_HEIGHT-100, 200, 100)) startBtn=UIButton(frame: CGRectMake(Yunshouyi.SCREEN_WIDTH/2-60, Yunshouyi.SCREEN_HEIGHT/2+50, 120, 35)) pageControl.numberOfPages=3; pageControl.currentPage=0 startBtn.setTitle("馬上體驗", forState: UIControlState.Normal) startBtn.setBackgroundImage(UIImage(named: "StartButton"), forState: UIControlState.Normal) startBtn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal) startBtn.addTarget(self, action: "guideOver", forControlEvents: UIControlEvents.TouchUpInside) startBtn.hidden=true scrollView.bounces=false scrollView.delegate=self self.view.addSubview(scrollView) self.view.addSubview(pageControl) self.view.addSubview(startBtn) } //開始使用app func guideOver(){ var mainVC=UINavigationController(rootViewController: UITableViewController()) self.presentViewController(mainVC, animated: true, completion: nil) } override func prefersStatusBarHidden() -> Bool { return true } }