UI第一周第一天

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è)方法中
  1. 搭建應(yīng)用程序中的所有的界面
  2. 獲取應(yīng)用程序需要展示的數(shù)據(jù)
  3. 使用界面展示數(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)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容