swift 編寫歡迎介面-- ios開發
現在很多ios開發人員都從oc轉向swift, swift 也必將成為ios開發的潮流和趨勢。
在此和大家一起分享程式進入的歡迎介面,讓app在使用者第一次開啟或者是更新之後進入時有歡迎介面瞭解app的內容和活動。
1、準備4張引導頁的圖片拖動到Images.xcassets檔案中。
2、建立一個ViewController.swift檔案。//
// ViewController.swift
// 歡迎介面
//
// Created by Mac Tylar on 15-11-2.
// Copyright (c) 2015年 Mac Tylar. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
// 閉包屬性 用於跳轉頁面
var startClosure: (()-> Void)?
// 建立scrollView
let scrollView = UIScrollView()
// 建立pageController
let pageControl = UIPageControl()
override func viewDidLoad() {
super.viewDidLoad ()
self.view.backgroundColor = UIColor.whiteColor()
// 設定scrollView的大小
scrollView.frame = self.view.bounds
// 設定scrollView的內容大小,橫向寬度等於圖片數目乘以寬度,高度為0 不滾動
scrollView.contentSize = CGSize(width: self.view.frame.width*4, height: 0)
// 設定分頁
scrollView.pagingEnabled = true
// 去除彈簧效果
scrollView.bounces = false
// 去除橫向的滾動條
scrollView.showsHorizontalScrollIndicator = false
// 設定代理
scrollView.delegate = self
// 設定居中和座標
pageControl.center = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height-50)
// 設定當前頁面指示顏色
pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
// 設定指示顏色
pageControl.pageIndicatorTintColor = UIColor.redColor()
// 設定頁數
pageControl.numberOfPages = 4
// pageControl的值變動時呼叫方法
pageControl.addTarget(self, action: "scrollViewDidEndDecelerating", forControlEvents: UIControlEvents.ValueChanged)
// 新增背景圖片
for var i = 0 ; i < 4 ; i++ {
let image = UIImage(named: "\(i+1)")
let imageView = UIImageView(frame: self.view.frame)
imageView.image = image
var frame = imageView.frame
// x軸等於當前的i乘以寬度 等於偏移寬度
frame.origin.x = CGFloat(i) * frame.size.width
// 設定imageView的frame
imageView.frame = frame
// 給最後一個導航頁上新增一個進入按鈕 進入主頁
if i == 3 {
let btn = UIButton(frame: CGRect(x: self.view.frame.width/2-60, y: self.view.frame.height/2+100, width: 120, height: 40))
btn.layer.cornerRadius = 10
btn.backgroundColor = UIColor.redColor()
btn.setTitle("進入", forState: UIControlState.Normal)
btn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
btn.setTitleColor(UIColor.grayColor(), forState: UIControlState.Highlighted)
btn.addTarget(self, action: "startAction:", forControlEvents: UIControlEvents.TouchUpInside)
imageView.addSubview(btn)
imageView.userInteractionEnabled = true
}
// 新增子檢視
scrollView.addSubview(imageView)
}
// 新增子檢視
self.view.addSubview(scrollView)
self.view.addSubview(pageControl)
// Do any additional setup after loading the view, typically from a nib.
}
func startAction(sender: UIButton) {
startClosure!()
}
// pageControl的值變動時呼叫的方法
func scrollViewDidEndDecelerating(scroll: UIScrollView) {
// 獲取index
let index = scrollView.contentOffset.x/self.view.frame.width
// 設定當前頁面
pageControl.currentPage = Int(index)
// 新增子檢視
self.view.addSubview(pageControl)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
3、在AppDelegate類中新增application方法的程式碼塊。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// NSUserDefaults.standardUserDefaults().removeObjectForKey(“started”)
// 判斷是否時第一次開啟app
var started = NSUserDefaults.standardUserDefaults().valueForKey(“started”) as? String
if started == nil {
let vc = ViewController()
self.window?.rootViewController = vc
vc.startClosure = { ()-> Void in
self.startApp()
NSUserDefaults.standardUserDefaults().setValue(“start”, forKey: “started”)
NSUserDefaults.standardUserDefaults().synchronize()
}
} else {
self.startApp()
}
return true
}
// 啟動程式
func startApp() {
let rootVc = centerViewViewController()
// 給viewController配置導航控制器
let navi = UINavigationController(rootViewController: rootVc)
self.window?.rootViewController = navi
}
注意:centerViewViewController()是一個viewControler的類。