您的位置:首页 > 其它

2015年06月30日第一天笔记

2015-07-19 18:56 211 查看
一、按钮的基本使用

frame 相当于父控件的左上角

需求:上下左右移动带背景图片的按钮,增大和见下带背景图片的按钮

分析

1)要定义一个按钮

2)定义上下左右 用frame.origin.x/y,变大,变小的方法frame.size.height/width

知识

定义按钮

1)连线属性 IBOutlet 2)按钮类名 UIButton

定义方法

1)方法类型 IBAction

方法实现

1)利用按钮的frame属性,frame 是CGRect 类型的

由CGPoint的origin和CGSize的size

2)不能直接给对象点出的的结构体属性的成员赋值

3)可以给独立的结构体属性成员赋值

所以,若要通过frame属性来移动button

1)创建一个CGRect的类型来保存获取到按钮frame

2)对这个新创建的类型变量赋值

3)将这个类型变量再次赋给按钮frame属性

二、知识重点

UIView的常见属性

@property(nonatomic,readonly) UIView *superview;

获得自己的父控件对象

@property(nonatomic,readonly,copy) NSArray *subviews;

获得自己的所有子控件对象

@property(nonatomic) NSInteger tag;

控件的ID\标识,父控件可以通过tag来找到对应的子控件

@property(nonatomic) CGAffineTransform transform;

控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

UIView的常见属性

@property(nonatomic) CGRect frame;(缩放,位置移动)

控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)

@property(nonatomic) CGRect bounds;(缩放)

控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x\y一般为0)

@property(nonatomic) CGPoint center;(位置移动)

控件中点的位置(以父控件的左上角为坐标原点)

UIKit坐标系

在UIKit中,坐标系的原点(0,0)在左上角,x值向右正向延伸,y值向下正向延伸

UIView的常见方法

- (void)addSubview:(UIView *)view;

添加一个子控件view

(void)removeFromSuperview;

从父控件中移除

(UIView *)viewWithTag:(NSInteger)tag;

根据一个tag标识找出对应的控件(一般都是子控件)

三、要掌握的

1)使用代码创建、添加控件

2)分别通过 storyboard 和 代码 设置按钮在不同状态的背景、文字、文字颜色

3)分别通过 storyboard 和 代码 监听按钮点击

4)修改控件的位置和尺寸

5)制作简单的动画效果

6)掌握frame、center、bounds、transform的使用

四、方法提取·左移定义的值

背景:利用frame完成按钮移动

特别之处:一个方法A控制上下左右移动,然后用不同方向的监听事件调用这个方法

问题:让这个方法A知道具体方向

解决:不同事件方法向这个方法A传入一个方向枚举类型用来判断

实施:定义个枚举类型

高明之处1:完成左上移动

改动之处:对枚举元素用左移定义的值,

typedef enum {

HMDirectionLeft = 1 << 0, // 0001

HMDirectionRight = 1 << 1, // 0010

HMDirectionUp = 1 << 2, // 0100

HMDirectionDown = 1 << 3 // 1000

} HMDirection;

然后在事件方法中 “左和上或一下”

[self moving:HMDirectionLeft|HMDirectionUp];

最后在方法A中判断的时候用 “或后的值与&每一个方向” 再进行处理移动

if (direction & HMDirectionLeft)

有效

if (direction & HMDirectionUp)

有效

if (direction & HMDirectionDown)

无效

if (direction & HMDirectionRight)

无效

原理:A|B&X=A|B(当X=A和X=B)

高明之处2:不同方向的监听事件合并为一个

问题:让这个方法A知道具体方向,但是现在只有一个方法

解决:设置每一个方向按钮的tag属性,让每个按钮链接该事件方法

原理:当点击某个按钮是,系统会把该触发按钮传入该事件方法,当然这个事件方法得按钮类型的参数用来接收到它,这样就可以得到当前按钮,即得到当前按钮的tag值,而tag值又可以枚举类型相同

实施:如上(改动之处)

注意:

1)用frame改变大小,要把Xcode里的 工具1面板的 Use Auto layout 勾选取消,否则失效

2)用bounds的位置一般为0,因为它始终以自己的左上角为坐标原点,所以用它来缩放控件

五、动画设置放在位置数据修改之后,重置位置之前

1)首尾式动画

// 1.开启动画

[UIView beginAnimations:nil context:nil];

// 2.设置执行动画的时间 (单位s)

[UIView setAnimationDuration:1];

// 修改头像center属性

self.headBtn.center = center;

// 提交动画

[UIView commitAnimations];

2)用block

// animate 动画 Duration 动画持续时间(s)

// 当遇到方法中需要使用block时候,直接敲一个回车(enter)

[UIView animateWithDuration:1 animations:^{

// 需要执行动画的代码

self.headBtn.center = center;

}];

2015年07月02日18:39:09

老师讲的QQ登录

1.QQ登陆思路

1.搭建界面

2.监听按钮的点击

1.监听按钮的点击事件方法有三种形式

1.不带参数

2.带一个参数,这个参数只能是触发这个事件的哪个控件(按钮)

3,带两个参数,第一个是触发这个事件的哪个控件,第二参数就是事件.

3.连线导致两个错误

1.连线后修改方法名称没有删除之前连线-> 找不方法的错误

2.连线后,修改属性名称,而没有删除之前的连线->setValue:forUndefinedKey

4.弹窗的两种方法

//第一种方式

// 在iOS9中被废弃

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@”提示” message:@”QQ不能为空!” delegate:nil cancelButtonTitle:@”确定” otherButtonTitles: nil];

// 让alertView显示出来

[alertView show];

//第二种方式:iOS8新增的

// 创建弹窗的控制器

UIAlertController *ac = [UIAlertController alertControllerWithTitle:@”提示” message:@”密码不能为空” preferredStyle:UIAlertControllerStyleAlert];

// 创建弹窗执行的行为

UIAlertAction *action = [UIAlertAction actionWithTitle:@”确定” style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {

// 点击按钮之后做事情的代码

NSLog(@”come here”);

}];

// 把行为添加到弹窗控制器上(弹窗会多出一个按钮)

[ac addAction:action];

// present 展示

[self presentViewController:ac animated:YES completion:nil];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: