iOS_UI_01_UIView

UIView

一彭谁、iOS概述
iOS是有蘋果公司開發(fā)的移動操作系統(tǒng)椭微,在2010年的2010WWDC大會上宣布該名為iOS

二隐绵、UI編程
UI:User interface之众;
UI設計則是指對軟件的人機交互、操作邏輯依许、界面美觀的整體設計
軟件設計可分為棺禾;兩個部分:編碼設計與UI設計
UI編程包括用戶、界面和用戶與界面之間的交互關系

三峭跳、UIWindow
定義:
     1.管理和協(xié)調應用程序的顯示膘婶。
     2.UIWindow類是UIView的子類,可以看做是特殊的UIView
     3.一般應用程序有且只有一個UIWindow對象

創(chuàng)建方式:
     1.Xcode 5 之前工程中有EmptyApplication模板蛀醉,需要代碼創(chuàng)建UIWindow對象
     2.從Xcode6開始取消EmptyApplication竣付,使用SingleViewApplication模板,使用StoryBoard自動創(chuàng)建UIWindow對象滞欠,不需要使用代碼

UIWindow的自動創(chuàng)建方式:
     1.先執(zhí)行Main函數古胆,執(zhí)行UIApplicationMain()創(chuàng)建代理
     2.看項目配置文件info.plist里面的StoryBoard的name
     3.根據這個name找到對應的StoryBoard,加載StoryBoard
     4.在加載的時候創(chuàng)建一個window
UIWindow的代碼創(chuàng)建方式:
     1.創(chuàng)建UIWindow對象:
       self.window = [[UIWindow alloc] init];
     2.確定window的大小和位置:[UIScreen mainScreen].bounds 得到當前設備屏幕的大小筛璧,位置默認為原點(左上角(0逸绎,0)點)。
       self.window.frame = [UIScreen mainScreen].bounds;
     3.為了能看到window夭谤,我們設置一個背景顏色棺牧,如果不設置背景顏色,默認為透明朗儒。
       self.window.backgroundColor = [UIColor whiteColor];
     4.將我們設置好的window對象颊乘,設置為當前應用程序的主window,并且顯示
       [self.window makeKeyAndVisible];
     5.XCode7之后醉锄,代碼實現的都需要在該方法中為window設置根視圖控制器乏悄。
       self.window.rootViewController = [[UIViewController alloc] init];
     注意:UIViewControl本身自帶一個View,所以父視圖的子視圖默認其本身自帶的視圖占第一個位置
四恳不、UIView
定義:
    1.UIView表示屏幕上的一塊矩形區(qū)域
    2.在iOS中幾乎所有可視化控件都是UIView的子類
    3.負責渲染區(qū)域的內容
    4.
功能:
    1.管理矩形區(qū)域里的內容
    2.處理矩形區(qū)域中的事件
    3.子視圖的管理
    4.實現UIView動畫
    5.UIView作為父類檩小。子類也具有這些功能
坐標系數相關數據類型
    CGPointMake:點坐標,
    CGRectMake烟勋;矩形坐標规求,坐標值為矩形的左上角的坐標值
創(chuàng)建UIView
    1.創(chuàng)建UIView,并確定位置寬高:UIView* view3 = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, height)];
    2.給View設置背景色
    3.將View添加到window對象中:[self.window addSubview:view_1];
UIView的常用屬性
    center:視圖的中心點卵惦,可以更改視圖位置:view.center = CGPoint(x,y);
    hidden:控制視圖顯示或隱藏:view.hidden = YES/NO;
    alpha:控制視圖的透明圖:view.alpha = 0~1.0;
    superView:獲取本視圖的父視圖:view.superView;
    subViews:獲取本市圖所有子視圖:view.subViews;
    tag:給視圖標記阻肿,用于找到該視圖:view.tag = 1000 (1000j及1000以上--防止和系統(tǒng)的tag沖突),獲取tag:[superView viewWithTag:]
View的添加:---視圖后添加到父視圖上沮尿,越靠近外層丛塌,先添加就是越靠近底層
    addSubView:--添加子視圖:[superView addSubView:view];
    insertSubView:atIndex--在指定的index處插入子視圖:[superView insertSubView:grayView atIndex:(NSInterger)];
    insertSubView:aboveSubview:--在指定的視圖的視圖上面添加子視圖:[superView insertSubView:grayView aboveSubview:view];
    insertSubView:belowSubview:--在指定的視圖的視圖下面添加子視圖:[superView insertSubView:grayView belowSubview:view];
視圖的層次管理:
    bringSubviewToFront:--把指定的子視圖移動到最前面:[superView bringSubviewToFront:view];
    sendSubviewToBack:--把指定的子視圖移動到最后面:[superView sendSubviewToBack:view];
    exchangeSubviewAtIndex:withSubviewAtIndex:--交換兩個指定索引位置的子視圖:[superView exchangeSubviewAtIndex:(NSInterger) withSubviewAtIndex:(NSInterger)];
    removeFromSuperView--把子視圖從父視圖上移除:[view removeFromSuperview ];
視圖的邊框的添加
    _nameLabel.layer.borderWidth = 0.5f;
    _numberLabel.layer.borderWidth = 0.5f;
注意:UIView的center屬性的類型是基本類型。

五、應用程序的啟動流程
注意:任何一個程序姨伤,無論是基于Mac OS還是iOS哨坪,程序都是從main.m文件的Main函數開始執(zhí)行的--應用程序的入口是M函數--main()
啟動流程
第一步:main();--calls---UIApplicationMain();
第二步:UIApplicationMain()創(chuàng)建應用程序對象 --create--UIApplication--應用程序指定代理對象
第三步:UIApplicationMain()創(chuàng)建應用程序代理 --create--AppDelegate
第四步:UIApplicationMain()加載--loads--Info.plist
第五步:UIApplication--創(chuàng)建和管理runloop(死循環(huán))--Runloop
第六步:UIApplication--發(fā)送消息(調用方法)--application:didFinishLaunchingWithOptions:
第七步:application:didFinishLaunchingWithOptions:--創(chuàng)建和顯示應用程序界面和根視圖控制器
六、在Main函數中return UIApplicationMain(argc, argv, @"UIApplication", NSStringFromClass([AppDelegate class]));
后兩個參數的含義:
      當賦值為nil的時候乍楚,就相當于@“UIApplication”,作用就是將類名傳遞給系統(tǒng)当编,讓系統(tǒng)創(chuàng)建當前應用對象
      NSStringFromClass是將類名轉換為字符串
      NSClassFromString是將一個字符串轉換為類名來使用
      當應用程序和其代理對象創(chuàng)建完畢之后,應用程序對象指定代理方
      將整個應用程序放入到runloop(死循環(huán))中徒溪,讓應用程序一直保持運行忿偷,可以快速的處理我們的操作。runloop中兩種狀態(tài)交替:等待被操作和運行操作臊泌。鲤桥。。渠概。
應用程序的代理
      application:didFinishLaunchingWithOptions:---告訴delegate程序啟動即將完成茶凳,程序準備要運行。(delegate實現這個方法時播揪,要創(chuàng)建window對象贮喧,將程序內容通過window呈現給用戶。)
      applicationDidBecomeActive:---告訴delegate應用程序已經進入活躍狀態(tài)(重新執(zhí)行被暫停的任務)
      applicationWillResignActive:---告訴delegate應用程序即將進入非活躍狀態(tài)(暫停游戲猪狈、停止timer等)
      applicationDidEnterBackground:---告訴delegate應用程序已經進入到了后臺(存儲用戶數據箱沦、釋放一些共享資源、停止timer等)
      applicationWillEnterForeground:---告訴delegate應用程序即將進入前臺(恢復所有進入后臺時暫停的任務)
      applicationWillTerminate:---告訴delegate應用程序即將退出(從內存中清除)雇庙,iOS4之后由applicationDidEnterBackground:替代
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末谓形,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子疆前,更是在濱河造成了極大的恐慌寒跳,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冯袍,死亡現場離奇詭異碾牌,居然都是意外死亡儡循,警方通過查閱死者的電腦和手機择膝,發(fā)現死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腹侣,“玉大人傲隶,你說我怎么就攤上這事「幢簦” “怎么了乒省?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵袖扛,是天一觀的道長。 經常有香客問我晾嘶,道長娶吞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任机断,我火速辦了婚禮绣夺,結果婚禮上,老公的妹妹穿的比我還像新娘陶耍。我一直安慰自己,他們只是感情好泊碑,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布馒过。 她就那樣靜靜地躺著酗钞,像睡著了一般来累。 火紅的嫁衣襯著肌膚如雪嘹锁。 梳的紋絲不亂的頭發(fā)上着裹,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天瘤运,我揣著相機與錄音匠题,去河邊找鬼。 笑死郁季,一個胖子當著我的面吹牛钱磅,可吹牛的內容都是我干的。 我是一名探鬼主播盖淡,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼年柠,長吁一口氣:“原來是場噩夢啊……” “哼褪迟!你這毒婦竟也來了冗恨?” 一聲冷哼從身側響起味赃,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤掀抹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后心俗,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡城榛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年揪利,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吠谢。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡土童,死狀恐怖工坊,靈堂內的尸體忽然破棺而出献汗,到底是詐尸還是另有隱情罢吃,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布就谜,位于F島的核電站,受9級特大地震影響里覆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一隧甚、第九天 我趴在偏房一處隱蔽的房頂上張望车荔。 院中可真熱鬧,春花似錦戚扳、人聲如沸忧便。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽珠增。三九已至,卻和暖如春宜雀,著一層夾襖步出監(jiān)牢的瞬間切平,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工辐董, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悴品,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓简烘,卻偏偏與公主長得像苔严,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子孤澎,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容

  • 初識iOS APP開發(fā)#### 在iOS APP開發(fā)中, main函數仍是程序的入口和出口, 但main函數不需要...
    DeanYan閱讀 6,163評論 0 3
  • 7届氢、不使用IB是,下面這樣做有什么問題覆旭? 6退子、請說說Layer和View的關系岖妄,以及你是如何使用它們的。 1.首先...
    AlanGe閱讀 673評論 0 1
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,139評論 30 470
  • 人在面試途中寂祥,都是套路凹雠啊!M杵尽福扬!。 本文包括: OC的面向對象 運行時Runtime 運行循環(huán)RunLoop 事件響...
    Miu七七閱讀 1,732評論 0 13
  • (一)家庭簡易自制橘子太妃棒棒糖 這次制作的口味是黑胡椒橘子太妃糖棒棒糖(5個量) 材料: – 5個從超市買來的橘...
    街角與后院閱讀 1,152評論 1 2