網(wǎng)站開發(fā)順序網(wǎng)絡(luò)營銷服務(wù)公司
安裝開發(fā)環(huán)境
安裝Xcode軟件
歷史版本查找 https://developer.apple.com/download/all/?q=debug
創(chuàng)建Object-C項(xiàng)目
啟動(dòng)過程
- 步驟
1.加載Main中定義的storyBoard
2.加載Main控制器
3.加載控制器下的View組件顯示
獲取控件的兩種方式
定義屬性連線:@property (weak, nonatomic) IBOutlet UIView *topView;
標(biāo)簽獲取:ViewWithTag效率低
第一個(gè)APP
- 定義頭文件
import <UIKit/UIKit.h>
2.定義界面屬性
#pragma mark 主頁歡迎詞@property (nonatomic,weak)IBOutlet UILabel *lableHello;
3.定義函數(shù)
#pragma mark 開始按鈕點(diǎn)擊界面- (IBAction)LoginClickEvent{NSLog(@"%s",__func__);printf(__func__);self.lableHello.textColor = UIColor.redColor;self.lableHello.text = @"Hello Ciara";self.lableHello.font = [UIFont systemFontOfSize:20.f];self.lableHello.backgroundColor=[UIColor yellowColor];}
運(yùn)行項(xiàng)目
基礎(chǔ)語法
Objective-C最大的特色是承自Smalltalk的消息傳遞模型(message passing)
- 定義函數(shù)不同
面向?qū)ο笫?/li>
obj.method(argument)
消息傳遞式
[obj method : argument]
將method轉(zhuǎn)遞給obj,運(yùn)行時(shí)處理,如果傳遞nil 不做處理
創(chuàng)建字符串
NSString* myString = @"My String\n";
NSString* anotherString = [NSString stringWithFormat:@"%d %s", 1, @"String"];
NSString* fromCString = [NSString stringWithCString:"A C string"
encoding:NSASCIIStringEncoding];
按鈕操作
//設(shè)置title
[self.loginBtn setTitle:@"Logout" forState: UIControlStateNormal];
view操作
ViewController生命周期
- loadView:
每次訪問controller的view(比如controller.view、self.view)且view為nil,loadView方法就會(huì)被調(diào)用。用于創(chuàng)建Controller的View,使用super調(diào)用父方法 - viewDidLoad:
1.系統(tǒng)調(diào)用 加載完成后調(diào)用View
2.空間初始化、數(shù)據(jù)初始化、懶加載
3.在視圖加載后被調(diào)用,如果是在代碼中創(chuàng)建的視圖加載器,他將會(huì)在loadView方法后被調(diào)用,如果是從nib視圖頁面輸出,他將會(huì)在視圖設(shè)置好后后被調(diào)用。只會(huì)被調(diào)用一次,之后進(jìn)入這個(gè)ViewController不調(diào)用此函數(shù)
-
viewWillAppear:
視圖將要顯示 -
viewWillLayoutSubviews:
控制器的view將要布局子控件(在這個(gè)方法里,部署需要改變重新刷新view的代碼,功能類似view的layoutSubViews()這個(gè)方法,需要注意的是,這個(gè)方法里一般都需要重置的view的frame,寬度和高度的獲取,因此view的frame一般都寫在這個(gè)方法里) -
viewDidLayoutSubviews:
控制器的view布局子控件完成 -
viewDidAppear:
視圖已經(jīng)顯示,父空間window顯示 -
viewWillDisappear:
視圖將要消失 -
viewDidDisappear:
視圖已經(jīng)消失,在Controller被切換時(shí)調(diào)用,第二個(gè)視圖出現(xiàn)后第一個(gè)視圖消失 -
didReceiveMemoryWarning:
1.系統(tǒng)調(diào)用,內(nèi)存警告時(shí)調(diào)用
2.去除不必要的內(nèi)存、耗時(shí)內(nèi)存
基本屬性
左上角為原點(diǎn)
fream: 父控件中的位置與尺寸
bounds:控間本身的位置和尺寸 中心點(diǎn)不變 四周延伸
center: 控件點(diǎn)的位置 中心點(diǎn)的位置
動(dòng)態(tài)添加控件
- (void)viewDidLoad {[super viewDidLoad];self.username=@"";//添加文本UILabel *lb=[[UILabel alloc] init];[lb setText:@"更換主題"];[lb setFrame:CGRectMake(5, 0, 400, 40)];[self.topView addSubview:lb];//添加開關(guān)UISwitch *sw =[[UISwitch alloc] init];[sw setFrame:CGRectMake(200, 0, 200, 40)];[self.topView addSubview:sw];//添加多選框UISegmentedControl *sc =[[UISegmentedControl alloc] initWithItems:@[@"yellow",@"red",@"Green"]] ;[sc setFrame:CGRectMake(5, 55, 300, 40)];[self.topView addSubview: sc];//設(shè)置控件位置[self.topView setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2) ];}- (void) viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];//操作 當(dāng)前頁面的父控件只能在此方法獲取到父控件UIwindow}
附錄:
- 教學(xué)視頻:
https://www.bilibili.com/video/BV1MF411h7SG/?p=4&spm_id_from=pageDriver&vd_source=38863a419514cab0ef6abb1aa88f9a79