
AppDelegate.swift
首先,創(chuàng)建一個(gè)項(xiàng)目,打開文件,可以看到AppDelegate.swift。在AppDelegate.swift中,最前面的語句是:
import UIKit
import是導(dǎo)入文件/庫的關(guān)鍵詞,UIKit是iOS中所有的控件所在庫文件
@UIApplicationMain
UIApplicationMain是iOS應(yīng)用程序的入口:
1.創(chuàng)建了一個(gè)UIApplication對象,代表當(dāng)前應(yīng)用程序。作用是用來檢測當(dāng)前應(yīng)用程序狀態(tài)的改變。
2.創(chuàng)建一個(gè)遵守UIApplicationDelegate的協(xié)議的的類對象作為UIApplication的代理,作用是處理應(yīng)用程序狀態(tài)的改變。
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
func applicationWillResignActive(application: UIApplication) {
}
func applicationDidEnterBackground(application: UIApplication) {
}
func applicationWillEnterForeground(application: UIApplication) {
}
func applicationDidBecomeActive(application: UIApplication) {
}
func applicationWillTerminate(application: UIApplication) {
}
}
- 當(dāng)應(yīng)用程序已經(jīng)啟動(dòng)成功后,會(huì)自動(dòng)調(diào)用方法:application,在這個(gè)方法中
- 搭建應(yīng)用程序中的所有的界面
- 獲取應(yīng)用程序需要展示的數(shù)據(jù)
- 使用界面展示數(shù)據(jù)
注意:如果不在這個(gè)方法中去創(chuàng)建window,那么程序會(huì)通過Main.storyboard去創(chuàng)建應(yīng)用程序的界面
當(dāng)應(yīng)用程序?qū)⒁蔀榉腔钴S狀態(tài)的時(shí)候會(huì)自動(dòng)調(diào)用方法:applicationWillResignActive.
應(yīng)用程序已經(jīng)進(jìn)入后臺(tái)的時(shí)候會(huì)自動(dòng)調(diào)用方法:applicationDidEnterBackground
應(yīng)用程序?qū)⒁M(jìn)入前臺(tái)的時(shí)候會(huì)自動(dòng)調(diào)用方法:applicationWillEnterForeground
應(yīng)用程序已經(jīng)變成活躍狀態(tài)的時(shí)候會(huì)自動(dòng)調(diào)用方法:applicationDidBecomeActive
應(yīng)用程序?qū)⒁K止的時(shí)候會(huì)自動(dòng)調(diào)用方法:applicationWillTerminate
window
window:窗口,一個(gè)應(yīng)用想要展示在屏幕上,至少要有一個(gè)window.一個(gè)手機(jī)應(yīng)用程序一般只有一個(gè)window.應(yīng)用程序中的所有的界面全部是展示在window上的
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//1.創(chuàng)建UIWindow對象
//frame是UIView中的屬性,確定視圖顯示在屏幕上的位置和大小
self.window = UIWindow.init(frame: UIScreen.mainScreen().bounds)
//2.設(shè)置根視圖控制器
self.window?.rootViewController = UIViewController()
//3.設(shè)置背景顏色
self.window?.backgroundColor = UIColor.yellowColor()
return true
}
UIView基本屬性和方法
UIView:是iOS中所有視圖(控件)直接/間接的父類;所以UIView的屬性和方法,對于其他類型的視圖都有效
視圖:在屏幕上能看見的所有的東西都屬于視圖
創(chuàng)建視圖的步驟:
1.創(chuàng)建UIView的對象
2.設(shè)置frame屬性(由坐標(biāo)(x,y)和大小(width,height)兩個(gè)部分組成)
3.將視圖添加到界面上
4.設(shè)置背景顏色(視圖的背景顏色默認(rèn)是透明色)
代碼示例:
let redView = UIView.init()
redView.frame = CGRect(x: 10, y: 10, width: 100, height: 100)
redView.frame = CGRectMake(10, 10, 100, 100)
self.view.addSubview(redView)
redView.backgroundColor = UIColor.redColor()
let yellowView = UIView.init(frame: CGRectMake(25, 25, 50, 50))
redView.addSubview(yellowView)
yellowView.backgroundColor = UIColor.yellowColor()
注意:計(jì)算視圖的坐標(biāo)的時(shí)候,注意相對性。當(dāng)前視圖被添加到哪個(gè)視圖上,那么當(dāng)前視圖的坐標(biāo)就是相對于誰來算的。
Frame相關(guān)屬性
- frame(坐標(biāo)和大小)
redView.frame = CGRectMake(100, 100, 100, 100)
- center(中心點(diǎn)坐標(biāo))
1.通過center確定視圖的中心點(diǎn)坐標(biāo)
2.可以通過改變center的值,去改變視圖的坐標(biāo)
- bounds(坐標(biāo)和大小)
默認(rèn)情況下bounds的坐標(biāo)是(0,0),大小和視圖的frame大小一樣
如果改變bounds的大小,frame的大小和坐標(biāo)都改變,center不變
注意:如果改變bounds的坐標(biāo),不影響當(dāng)前視圖的位置。但是影響添加到當(dāng)前視圖上的子視圖的坐標(biāo),不建議修改bounds
- transform(形變)-當(dāng)前視圖發(fā)生形變,那么添加到當(dāng)前視圖上的所有的視圖會(huì)跟著一起形變
1.縮放
redView.transform = CGAffineTransformMakeScale(0.8, 2.5)
2.旋轉(zhuǎn)
redView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))
3.平移
redView.transform = CGAffineTransformMakeTranslation(0, 300)
4.多個(gè)形變同時(shí)發(fā)生
a.在另外一個(gè)形變的前提下旋轉(zhuǎn)
redView.transform = CGAffineTransformRotate(CGAffineTransformMakeScale(0.5, 0.5), CGFloat(M_PI_4))
b.在另外一個(gè)形變的前提下縮放
let transLation = CGAffineTransformMakeTranslation(100, 0)
redView.transform = CGAffineTransformScale(transLation, 0.5, 2)
在另外一個(gè)形變的前提下平移
redView.transform = CGAffineTransformTranslate(redView.transform, 0, 300)
d.組合兩個(gè)形變:旋轉(zhuǎn)形變
let rotate = CGAffineTransformMakeRotation(0.2)
let transLation1 = CGAffineTransformMakeTranslation(100, 100)
redView.transform = CGAffineTransformConcat(rotate, transLation1)