1.万物皆对象
2.LBS:基于位置的服务(热门)
3.在启动XCODE创建项目的时候最好勾选 git
4.在SB界面中更改UILabel 之类的控件里面的内容,控件的frame会随着内容的大小而改变,但是在右侧的属性栏里面更改则不会影响frame
5.IBAction:SB界面原来叫Interface Builder 缩写为IB,
6.M_PI_4 代表45° 以此类推
// OC语法规定:不允许直接修改 某个对象中结构体属性的成员
-
12345678
// 1.先取出frame
CGRect tempFrame = _btn.frame;
// 2.修改y值 // 这个能修改是因为,这个tempframe只是一个简单的结构体,而不是对象的结构体,对象的结构体是不能直接修改,但是单纯的结构体是可以的
tempFrame.origin.y -= 50;
// 3.重新赋值按钮的frame
_btn.frame = tempFrame;
非常重要:注意辨别方法传入参数的类型,
- 如 : - (IBAction)add:(id)sender
- 由于传入的参数是id类型,所以不能使用点语法,如sender.tag就不能使用
- 将(id)改为(UIButton *)就可以使用点语法了
block 块
- 定义:可以给块传递参数,正如给函数传递一样。块也具有返回值。与函数不同的是,块定义在函数或者方法内部,并且能够访问在函数或者方法范围内块之外的任何变量。
- Blocks的定义:
- int (^MySum)(int, int) = ^(int a, int b) {
- return a+b;
- };
- 定义了一个叫MySum的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现
- Block可以访问局部变量,但是不能修改。
- 在oc中方法调用block的一半格式:- (void)btn: (void (^)())block
- void----没有返回值
- (^)块的标志
- ()没有参数
退出键盘的两种方式
- resignFirstResponder
- 当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘
- endEditing
- 只要调用这个方法的控件内部存在第一响应者,就能退出键盘
通过代码创建UI并实现动作的一般流程
- 1.搭建UI界面
- 实例化控件(为控件指定各种属性)
- 将实例化的控件添加到view中
- 2.根据UI需求将程序运行中状态动态改变的
- 1. 定义属性
- 根据UI需求将程序中状态动态改变的控件定义属性,即相当于在storyboard中的创建UIOutlet步骤
- @property (nonatomic, strong) UILabel *noLabel;
- 2. 创建属性对应的控件,添加到视图
- 实例化控件(为控件指定各种属性)
- 将实例化的控件添加到view中
- UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 20, 320, 40)];
- label.text = @"1/5";
- label.textAlignment = NSTextAlignmentCenter;
- [self.view addSubview:label];
- 为有属性的控件分配属性:
- self.noLabel = label;
- 3.创建按键点击时产生的动作(即创建方法)
- 4.监听按钮的点击事件
- [rightBtn addTarget:self action:@selector(rightClick) forControlEvents:UIControlEventTouchUpInside];