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)系作者