UI基礎學習1+

UI第一天學習總結

通過swift基礎語言的三周學習過后,今天迎接來了iOS開發第二階段的學習--UI

FirstBlood

首先我們APPAlication.swift進行了一些基本的認識,
下面就是APPAlication.swift的一個框架,雖然我們以前經??吹剿?,但是從未真正地去深入了解過它,如今這個UI階段我們將天天和它打交道。下面我們就來幾本理解一下它的結構框架吧!

//import是導入文件/庫的關鍵字
//UIKit是iOS中所有的控件所在庫文件
import UIKit



@UIApplicationMain  //調用了OC中的UIApplicationMain函數;
//UIApplicationMain是iOS應用程序的入口
//UIApplicationMain:1.創建了一個UIApplication對象,代表當前應用程序. 作用是用來檢測當前應用程序狀態的改變。 2.創建一個遵守UIApplicationDelegate的協議的類的對象作為UIApplication的代理,作用是處理應用程序狀態的改變(創建AppDelegate對象并且設置為UIApplication對象的代理)




class AppDelegate: UIResponder, UIApplicationDelegate {

    
    
    //屬性:
    var window: UIWindow?

    
    
    //方法:
    //1.當應用程序已經啟動成功后,會自動調用這個方法
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        //1.在這個方法中來搭建應用程序中的所有的界面
        //2.獲取應用程序需要展示的數據
        //3.使用界面展示數據
        //注意:如果不在這個方法中去創建window,那么程序會通過Main.storyboard去創建應用程序的界面
        print("程序啟動成功")
        
        return true
    }

    
    
    //2.當應用程序將要成為非活躍狀態的時候會自動調用這個方法。
    //活躍狀態:程序在屏幕上可見
    //非活躍狀態:程序沒有顯示在屏幕上(按home鍵進入后臺、來電打斷、在當前應用程序打開其他的應用程序)
    func applicationWillResignActive(application: UIApplication) {
        
        //按下home鍵:command + shift + h
        
        //在這個方法中一般去暫停視頻/音頻播放;游戲需要暫停游戲;保存數據
        
        print("將要成為非活躍狀態")
    }

    
    
    
    //3.應用程序已經進入后臺的時候會自動調用
    //進入后臺:按home鍵
    func applicationDidEnterBackground(application: UIApplication) {
         //在這個方法中一般去暫停視頻/音頻播放;游戲需要暫停游戲;保存數據
        print("已經進入后臺")
    }

    
    
    //4.應用程序將要進入前臺的時候會自動調用
    //進入前臺:
    func applicationWillEnterForeground(application: UIApplication) {
        
        //按兩下home鍵:command + shift + h + h
        print("將要進入前臺")
    }

    
    
    //5.應用程序已經變成活躍狀態的時候會自動調用
    //a.程序啟動成功后
    //b.程序從后臺重新進入前臺
    //c.來電打斷結束。。。
    func applicationDidBecomeActive(application: UIApplication) {
        
        print("已經變成活躍狀態")
        
    }


上面我將整個結構框架的解析注釋在了代碼里

UIWindow

window顧名思義就是窗口的意思,在這里我們將UIwindow稱為視圖窗口,下面我將把今天學習UIWindow的全部過程展示在我的代碼中,方便大家相互學習

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //創建一個視圖對象
        let redView = UIView.init()
        //添加到界面上
        self.view.addSubview(redView)
        //設置背景顏色
        redView.backgroundColor = UIColor.redColor()
        
        
        //1.frame(坐標和大小)
        redView.frame = CGRectMake(100, 100, 100, 100)
        
        
        //2.center(中心點坐標)
        //a.通過frame和確定視圖的中心點坐標
        print(redView.center)
        //b.可以通過改變center的值,去改變視圖的坐標
        redView.center = CGPointMake(200, 200)
        print(redView.frame)
        
        
        //3.bounds(坐標和大小)
        //掌握:默認情況下bounds的坐標是(0,0),大小和視圖的frame大小一樣
        print(redView.bounds)
        
        
        //了解:
        //如果改變bounds的大小,frame的大小和坐標都改變,center不變
        /*
        redView.bounds = CGRectMake(0, 0, 200, 200)
        print("frame\(redView.frame)")
        print("center\(redView.center)")
         */
        
        //如果改變bounds的坐標,不影響當前視圖的位置。但是影響添加到當前視圖上的子視圖的坐標,不建議修改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(形變)
        
        //當前視圖發生形變,那么添加到當前視圖上的所有的視圖會跟著一起形變
        //a.縮放
        //參數1:x方向上的縮放比例
        //參數2:y方向上的縮放比例
        redView.transform = CGAffineTransformMakeScale(0.8, 2.5)
        
        
        //b.旋轉
        //參數:旋轉角度(圓周率對應的角度值)
        redView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4 / 2))
        
        
        //c.平移
        //參數1:在x方向上平移的距離,負值->向左移,正值->向右移
        //參數2:在y方向上平移的距離,負值->向上移,正值->向下移
        redView.transform = CGAffineTransformMakeTranslation(0, 300)
        
    //d.多個形變同時發生
        //在另外一個形變的前提下旋轉
        //參數1:另外一個形變
        //參數2:旋轉角度
        redView.transform = CGAffineTransformRotate(CGAffineTransformMakeScale(0.5, 0.5), CGFloat(M_PI_4 / 2))
        
        
        //在另外一個形變的前提下平移
        redView.transform = CGAffineTransformTranslate(redView.transform, 0, 300)
        
        
        //在另外一個形變的前提下縮放
        //創建一個平移的形變
        let transLation = CGAffineTransformMakeTranslation(100, 0)
        redView.transform = CGAffineTransformScale(transLation, 0.5, 2)
        
        
    //組合兩個形變
        //1.旋轉形變
        let rotate = CGAffineTransformMakeRotation(0.2)
        
        
        //2.平移形變
        let transLation1 = CGAffineTransformMakeTranslation(100, 100)
        
        
        //3.將旋轉形變和平移形變組合
        redView.transform = CGAffineTransformConcat(rotate, transLation1)
        
        
    
    }

    


}


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,841評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • 正所謂,物以類聚,人以群分,人的天性決定了喜歡和同類在一起。隨著社會的發展,我們的交流愈發便捷,即使老朋友隔著千山...
    _KD閱讀 1,575評論 0 0
  • 阿芷新搬了家,為了安全和清凈,不顧房租比原來的合租房貴了一半,咬牙租下了這間20平米的小窩。 小窩是小電梯公寓,在...
    耕蕓的蕓閱讀 330評論 3 4
  • 一個小孩赤裸裸地被埋藏在一片花粉中。 大人們找不到她, 小伙伴們找不到她。 蝴...
    梁丫梁丑丑是個幼稚仔閱讀 175評論 0 0