UI第一天學(xué)習(xí)總結(jié)
通過swift基礎(chǔ)語言的三周學(xué)習(xí)過后,今天迎接來了iOS開發(fā)第二階段的學(xué)習(xí)--UI
FirstBlood
首先我們APPAlication.swift進(jìn)行了一些基本的認(rèn)識(shí),
下面就是APPAlication.swift的一個(gè)框架,雖然我們以前經(jīng)趁瘸模看到它掉瞳,但是從未真正地去深入了解過它届惋,如今這個(gè)UI階段我們將天天和它打交道。下面我們就來幾本理解一下它的結(jié)構(gòu)框架吧菠赚!
//import是導(dǎo)入文件/庫的關(guān)鍵字
//UIKit是iOS中所有的控件所在庫文件
import UIKit
@UIApplicationMain //調(diào)用了OC中的UIApplicationMain函數(shù)脑豹;
//UIApplicationMain是iOS應(yīng)用程序的入口
//UIApplicationMain:1.創(chuàng)建了一個(gè)UIApplication對(duì)象,代表當(dāng)前應(yīng)用程序. 作用是用來檢測(cè)當(dāng)前應(yīng)用程序狀態(tài)的改變衡查。 2.創(chuàng)建一個(gè)遵守UIApplicationDelegate的協(xié)議的類的對(duì)象作為UIApplication的代理瘩欺,作用是處理應(yīng)用程序狀態(tài)的改變(創(chuàng)建AppDelegate對(duì)象并且設(shè)置為UIApplication對(duì)象的代理)
class AppDelegate: UIResponder, UIApplicationDelegate {
//屬性:
var window: UIWindow?
//方法:
//1.當(dāng)應(yīng)用程序已經(jīng)啟動(dòng)成功后,會(huì)自動(dòng)調(diào)用這個(gè)方法
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
//1.在這個(gè)方法中來搭建應(yīng)用程序中的所有的界面
//2.獲取應(yīng)用程序需要展示的數(shù)據(jù)
//3.使用界面展示數(shù)據(jù)
//注意:如果不在這個(gè)方法中去創(chuàng)建window,那么程序會(huì)通過Main.storyboard去創(chuàng)建應(yīng)用程序的界面
print("程序啟動(dòng)成功")
return true
}
//2.當(dāng)應(yīng)用程序?qū)⒁蔀榉腔钴S狀態(tài)的時(shí)候會(huì)自動(dòng)調(diào)用這個(gè)方法。
//活躍狀態(tài):程序在屏幕上可見
//非活躍狀態(tài):程序沒有顯示在屏幕上(按home鍵進(jìn)入后臺(tái)俱饿、來電打斷歌粥、在當(dāng)前應(yīng)用程序打開其他的應(yīng)用程序)
func applicationWillResignActive(application: UIApplication) {
//按下home鍵:command + shift + h
//在這個(gè)方法中一般去暫停視頻/音頻播放;游戲需要暫停游戲拍埠;保存數(shù)據(jù)
print("將要成為非活躍狀態(tài)")
}
//3.應(yīng)用程序已經(jīng)進(jìn)入后臺(tái)的時(shí)候會(huì)自動(dòng)調(diào)用
//進(jìn)入后臺(tái):按home鍵
func applicationDidEnterBackground(application: UIApplication) {
//在這個(gè)方法中一般去暫停視頻/音頻播放失驶;游戲需要暫停游戲;保存數(shù)據(jù)
print("已經(jīng)進(jìn)入后臺(tái)")
}
//4.應(yīng)用程序?qū)⒁M(jìn)入前臺(tái)的時(shí)候會(huì)自動(dòng)調(diào)用
//進(jìn)入前臺(tái):
func applicationWillEnterForeground(application: UIApplication) {
//按兩下home鍵:command + shift + h + h
print("將要進(jìn)入前臺(tái)")
}
//5.應(yīng)用程序已經(jīng)變成活躍狀態(tài)的時(shí)候會(huì)自動(dòng)調(diào)用
//a.程序啟動(dòng)成功后
//b.程序從后臺(tái)重新進(jìn)入前臺(tái)
//c.來電打斷結(jié)束枣购。嬉探。。
func applicationDidBecomeActive(application: UIApplication) {
print("已經(jīng)變成活躍狀態(tài)")
}
上面我將整個(gè)結(jié)構(gòu)框架的解析注釋在了代碼里
UIWindow
window顧名思義就是窗口的意思棉圈,在這里我們將UIwindow稱為視圖窗口涩堤,下面我將把今天學(xué)習(xí)UIWindow的全部過程展示在我的代碼中,方便大家相互學(xué)習(xí)
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//創(chuàng)建一個(gè)視圖對(duì)象
let redView = UIView.init()
//添加到界面上
self.view.addSubview(redView)
//設(shè)置背景顏色
redView.backgroundColor = UIColor.redColor()
//1.frame(坐標(biāo)和大小)
redView.frame = CGRectMake(100, 100, 100, 100)
//2.center(中心點(diǎn)坐標(biāo))
//a.通過frame和確定視圖的中心點(diǎn)坐標(biāo)
print(redView.center)
//b.可以通過改變center的值分瘾,去改變視圖的坐標(biāo)
redView.center = CGPointMake(200, 200)
print(redView.frame)
//3.bounds(坐標(biāo)和大小)
//掌握:默認(rèn)情況下bounds的坐標(biāo)是(0,0),大小和視圖的frame大小一樣
print(redView.bounds)
//了解:
//如果改變bounds的大小胎围,frame的大小和坐標(biāo)都改變,center不變
/*
redView.bounds = CGRectMake(0, 0, 200, 200)
print("frame\(redView.frame)")
print("center\(redView.center)")
*/
//如果改變bounds的坐標(biāo)德召,不影響當(dāng)前視圖的位置白魂。但是影響添加到當(dāng)前視圖上的子視圖的坐標(biāo),不建議修改bounds
redView.bounds = CGRectMake(0, 0, 100, 100)
let yellowView = UIView.init(frame: CGRectMake(10, 10, 40, 40))
yellowView.backgroundColor = UIColor.yellowColor()
redView.addSubview(yellowView)
//4.transform(形變)
//當(dāng)前視圖發(fā)生形變上岗,那么添加到當(dāng)前視圖上的所有的視圖會(huì)跟著一起形變
//a.縮放
//參數(shù)1:x方向上的縮放比例
//參數(shù)2:y方向上的縮放比例
redView.transform = CGAffineTransformMakeScale(0.8, 2.5)
//b.旋轉(zhuǎn)
//參數(shù):旋轉(zhuǎn)角度(圓周率對(duì)應(yīng)的角度值)
redView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4 / 2))
//c.平移
//參數(shù)1:在x方向上平移的距離碧聪,負(fù)值->向左移,正值->向右移
//參數(shù)2:在y方向上平移的距離液茎,負(fù)值->向上移逞姿,正值->向下移
redView.transform = CGAffineTransformMakeTranslation(0, 300)
//d.多個(gè)形變同時(shí)發(fā)生
//在另外一個(gè)形變的前提下旋轉(zhuǎn)
//參數(shù)1:另外一個(gè)形變
//參數(shù)2:旋轉(zhuǎn)角度
redView.transform = CGAffineTransformRotate(CGAffineTransformMakeScale(0.5, 0.5), CGFloat(M_PI_4 / 2))
//在另外一個(gè)形變的前提下平移
redView.transform = CGAffineTransformTranslate(redView.transform, 0, 300)
//在另外一個(gè)形變的前提下縮放
//創(chuàng)建一個(gè)平移的形變
let transLation = CGAffineTransformMakeTranslation(100, 0)
redView.transform = CGAffineTransformScale(transLation, 0.5, 2)
//組合兩個(gè)形變
//1.旋轉(zhuǎn)形變
let rotate = CGAffineTransformMakeRotation(0.2)
//2.平移形變
let transLation1 = CGAffineTransformMakeTranslation(100, 100)
//3.將旋轉(zhuǎn)形變和平移形變組合
redView.transform = CGAffineTransformConcat(rotate, transLation1)
}
}