安装开发环境
安装Xcode软件
历史版本查找 https://developer.apple.com/download/all/?q=debug
创建Object-C项目
启动过程
- 步骤
1.加载Main中定义的storyBoard
2.加载Main控制器
3.加载控制器下的View组件显示
获取控件的两种方式
定义属性连线:@property (weak, nonatomic) IBOutlet UIView *topView;
标签获取:ViewWithTag效率低
第一个APP
-
定义头文件
import <UIKit/UIKit.h>
2.定义界面属性
#pragma mark 主页欢迎词
@property (nonatomic,weak)IBOutlet UILabel *lableHello;
3.定义函数
#pragma mark 开始按钮点击界面
- (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];
}
运行项目
基础语法
Objective-C最大的特色是承自Smalltalk的消息传递模型(message passing)
-
定义函数不同
面向对象式obj.method(argument)
消息传递式
[obj method : argument]
将method转递给obj,运行时处理,如果传递nil 不做处理
创建字符串
NSString* myString = @"My String\n";
NSString* anotherString = [NSString stringWithFormat:@"%d %s", 1, @"String"];
NSString* fromCString = [NSString stringWithCString:"A C string"
encoding:NSASCIIStringEncoding];
按钮操作
//设置title
[self.loginBtn setTitle:@"Logout" forState: UIControlStateNormal];
view操作
ViewController生命周期
- loadView:
每次访问controller的view(比如controller.view、self.view)且view为nil,loadView方法就会被调用。用于创建Controller的View,使用super调用父方法 - viewDidLoad:
1.系统调用 加载完成后调用View
2.空间初始化、数据初始化、懒加载
3.在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadView方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用。只会被调用一次,之后进入这个ViewController不调用此函数
-
viewWillAppear:
视图将要显示
-
viewWillLayoutSubviews:
控制器的view将要布局子控件(在这个方法里,部署需要改变重新刷新view的代码,功能类似view的layoutSubViews()这个方法,需要注意的是,这个方法里一般都需要重置的view的frame,宽度和高度的获取,因此view的frame一般都写在这个方法里)
-
viewDidLayoutSubviews:
控制器的view布局子控件完成
-
viewDidAppear:
视图已经显示,父空间window显示
-
viewWillDisappear:
视图将要消失
-
viewDidDisappear:
视图已经消失,在Controller被切换时调用,第二个视图出现后第一个视图消失
-
didReceiveMemoryWarning:
1.系统调用,内存警告时调用
2.去除不必要的内存、耗时内存
基本属性
左上角为原点
fream: 父控件中的位置与尺寸
bounds:控间本身的位置和尺寸 中心点不变 四周延伸
center: 控件点的位置 中心点的位置
动态添加控件
- (void)viewDidLoad {
[super viewDidLoad];
self.username=@"";
//添加文本
UILabel *lb=[[UILabel alloc] init];
[lb setText:@"更换主题"];
[lb setFrame:CGRectMake(5, 0, 400, 40)];
[self.topView addSubview:lb];
//添加开关
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];
//设置控件位置
[self.topView setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2) ];
}
- (void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
//操作 当前页面的父控件只能在此方法获取到父控件UIwindow
}