目錄:
一、視圖和控制器
1 視圖(view)ios程序運行期間用戶所能看見的東西都可以認為是視圖,比如UIwindow就是一個視圖類。
* 所有視圖類都直接間接的繼承UIView
* 控件是可以和用戶交互的視圖對象,一般會繼承自UIConller類,UIButton、UILable
2 控制器(contoller)控制視圖顯示的對象叫控制器,通常叫視圖控制器。
* 所有的視圖控制器都是直接或間接繼承自UIViewController類
* 創建自己的控制器,定義一個類,繼承自UIViewController
步驟:
*1 創建一個控制器MXViewController在MXViewController.m文件中重寫viewDidLoad
- (void)viewDidLoad
{
//創建控件
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 100, 40)];
//設置屬性
label.text = @"hello Word!!!";
//加入父視圖中
[self.view addSubview:label];
}
*2 在MXAppDelegate.m文件中寫application:函數具體如下:
#import "MXViewController.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
//創建類控件
MXViewController* myController = [[MXViewController alloc] init];
//修改window中rootViewController屬性
self.window.rootViewController = myController;
[self.window makeKeyAndVisible];
return YES;
}
*3 button
- (void)viewDidLoad
{
//一定要調用父類的viewDidLoad
[super viewDidLoad];
//創建控件
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 100, 40)];
UIButton* button = [UIButton buttonWithType:UIButtonTypeSystem];
//設置屬性
label.text = @"hello world!!!";
[button setTitle:@"hello" forState:UIControlStateNormal];
button.frame = CGRectMake(160, 20, 80, 30);//frame設置坐標和寬高
//button.backgroundColor = [UIColor grayColor];
//給button添加事件處理 self對象 tap是self對象方法 for...點擊各種情況
[button addTarget:self action:@selector(tap) forControlEvents:UIControlEventTouchUpInside];
//加入父視圖中
[self.view addSubview:label];
[self.view addSubview:button];
// Do any additional setup after loading the view.
}
-(void)tap{
NSLog(@"調用了tap方法");
}
二、interface Builder
1 簡稱IB,專門用于讓開發者構造界面的,是一個可視化的所見即所得的界面設計工具,從xcode4就集成到了xcode中
2 其本質是一個文本編輯器,設計結果是一個文本文件,以前此文件的擴展名是.nib,所以也叫nib文件,現在這個文本文件擴展名是.xib,
nib文件:button={"0k",{12,12}};
xib是xml文件
nib文件的內容,界面上所有的對象及屬性,還要對象與對象之間的關系。
3 如何使用,程序運行時,如果你的控制器,創建時加載了此nib文件,那么文件中描述的所有對象會被創建,所有屬性會被賦值,對象之間的關系會自動維護
4 如何加載,所有的控制器都會有一個方法:initWithNibName:"nib文件的文件名"
5 給xib文件中button控件綁定一個方法,選擇button控件,按住Ctrl拖拽至方法處,該方法的返回值必須是IBAction(本質void),只是一個連接的一個標記
6 IBAction
* .m文件中定義一個私有方法,將來做事情的響應。
* 從xib文件中連接按鈕到方法上(用Ctrl鍵拖拽連接)
* 取消連接,從xib文件中找到按鈕,第6個檢查器中找到連接,將其刪除
7 IBOutlet
* 在.m文件的擴展中定義屬性,屬性一定有IBOutlet標記
* 從xib文件中連接屬性(連線)
* 如果屬性是retain(strong)并使用了MRC,需要在dealloc方法中release此屬性
8 IBOutlet 和 IBAction
IBOutlet連接的是屬性,如果需要在程序代碼中(controller中),訪問這個xib文件中定義的對象時(如lable)就需要連接一個屬性到xib
IBAction連接的是方法,如果需要用戶操作了xib文件中定義的控件(如按鈕),需要調用方法,那么方法就需要用IBAction連線
IBAction方法一般是由用戶觸發的
練習:界面上有一個按鈕,當用戶touch了此按鈕時,界面上就出現了一個lable,
作業:
0. 復習課堂代碼
1. 嘗試使用Button的各種事件
2. 嘗試使用UILabel和UIButton的其他屬性
如:font (字體)
textColor
backgroundColor
tintColor
3. 寫一個模仿聊天的界面
界面上有一個按鈕,按下此按鈕后,界面會出現一個Label
要求:
1)每個Label之間上下間隔10個點,并且和屏幕左右保持10個點的距離
2) label高20個點
3) 每個label的文字會疊加
4) 每個label的背景色是灰色的
5) 嘗試改變字體(UIFont)
屏幕寬度是320個點
新聞熱點
疑難解答