iOS学习笔记-006.UIView基础

UIView基础

一、 IBAction的参数


- (IBAction)left:(UIButton *)button

1> 在OC中,绝大多数的控件监听方法的第一个参数就是控件本身
2> 默认连线时的参数类型是id
3> 如果要在监听方法中,方便控件的使用,可以在连线时或者连线后,修改监听方法的参数类型

二、 修改对象的结构体成员

在OC中,不允许直接修改“对象”的“结构体属性”的“成员”,但是允许修改“对象”的“结构体属性”

修改结构体属性的成员方法如下:

1> 使用临时变量记录对象的结构体属性
2> 修改临时变量的属性
3> 将临时变量重新设置给对象的结构体属性

三、在程序开发中需要避免出现魔法数字(Magic Number)

使用枚举类型,可以避免在程序中出现魔法数字

1> 枚举类型实质上就是一个整数,其作用就是用来替代魔法数字
2> 枚举类型中,指定了第一个整数之后,后面的数字会递增

四、frame & bounds & center

1> frame可以修改对象的位置和尺寸
2> bounds可以修改对象的尺寸
3> center可以修改对象的位置

五、首尾式动画

// beginAnimations表示此后的代码要“参与到”动画中
[UIView beginAnimations:nil context:nil];
// setAnimationDuration用来指定动画持续时间
[UIView setAnimationDuration:2.0];

self.headImageView.bounds = rect;
......

// commitAnimations,将beginAnimation之后的所有动画提交并生成动画
[UIView commitAnimations];

六、 transform属性

在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度

常用的创建transform结构体方法分两大类

1> 创建“基于控件初始位置”的形变 CGAffineTransformMakeTranslation CGAffineTransformMakeScale CGAffineTransformMakeRotation

2> 创建“基于transform参数”的形变 CGAffineTransformTranslate CGAffineTransformScale CGAffineTransformRotate

补充: 在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI 正数表示顺时针旋转 负数表示逆时针旋转

提示:由于transform属性可以基于控件的上一次的状态进行叠加形变,例如,先旋转再平移 因此在实际动画开发中,当涉及位置、尺寸形变效果时,大多修改控件的transform属性, 而不是frame、bounds、center

七、使用代码创建控件

在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力!

使用代码创建控件的步骤如下:

1> 使用控件对应类创建对象
2> 设置对象属性:frame\color\text\image\backgroundImage……
3> [self.view addSubview:btn];将控件添加到视图

设置控件监听方法的示例代码如下:

[btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

提示:
1> addTarget方法定义在UIControl类中,这意味着可以给所有继承自UIControl类的对象添加监听方法
2> 监听方法的第一个参数就是对象本身 3> 监听方法的第二个参数是监听控件的事件

八、viewDidLoad

viewDidLoad是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作

在viewDidLoad方法中,一定不要忘记调用父类的方法实现!
[super viewDidLoad];

九、按钮的第一个例子

    //
    //  ViewController.m
    //  01_按钮的使用
    //
    //  Created by 杞文明 on 15/9/13.
    //  Copyright © 2015年 杞文明. All rights reserved.
    //

    #import "ViewController.h"

    #define moveValue  50
    #define zoomValue  60;

    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIImageView *headIv;

    @end

    @implementation ViewController

    typedef enum{
       LEFT = 10,
       RIGHT,
       TOP,
       BOTTON
    }KMove;

    /*
     * 上下左右移动
     */
    - (IBAction)move:(UIButton*)button {
        //给头像设置移动
        CGPoint p = self.headIv.center;
        switch (button.tag) {
            case LEFT:
                p.x -= moveValue;
                break;
            case RIGHT:
                p.x += moveValue;
                break;
            case TOP:
                p.y -= moveValue;
                break;
            case BOTTON:
                p.y += moveValue;
                break;

            default:
                break;
        }
        //动画
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:2.0];
        self.headIv.center = p;
        [UIView commitAnimations];
    }



    /* 
     * 缩放
     */
    - (IBAction)zoom:(UIButton*)button {
        CGRect fram = self.headIv.bounds;
        if (button.tag) {
            fram.size.height += zoomValue;
            fram.size.width += zoomValue;
        } else {
            fram.size.height -= zoomValue;
            fram.size.width -= zoomValue;
        }
        //首尾动画
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:2.0];
        self.headIv.bounds = fram;
        [UIView commitAnimations];
    }


    @end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值