iOS 控件的属性 frame bounds transform

  1. frame
    1> 表示控件的位置和尺寸(以父控件的左上角为坐标原点(0,0))
    2> 修改这个属性,可以调整控件的位置和尺寸

  2. bounds
    1> 表示控件的位置和尺寸(以自己的左上角为坐标原点,位置永远是(0,0))
    2> 修改这个属性,只能调整控件的位置

  3. center
    1> 表示控件的中点(以父控件的左上角为坐标原点)
    2> 修改这个属性,可以调整控件的位置

  4. tag
    1> 表示控件的标识
    2> 通过不同标识可以区分不同的控件

  5. transform
    表示控件的形变状态(旋转角度,缩放比例)


#pragma mark 控制按钮走动(上下左右)
- (IBAction)run:(id)sender{
    int kDelta = 10;
    [self btnClickWithBlock:^{
        //1. 先取出 frame
        CGRect tempFrame = _btn.frame;
        //2. 取出按钮的 tag 标记
        int tag = [sender tag];
        switch (tag) {
            case 1:
                tempFrame.origin.y -= kDelta;
                break;
            case 2:
                tempFrame.origin.x += kDelta;
                break;
            case 3:
                tempFrame.origin.y += kDelta;
                break;
            case 4:
                tempFrame.origin.x -= kDelta;
                break;
            default:
                break;
        }
        //3. 重新赋值按钮的 frame
        _btn.frame = tempFrame;
    }];
}

#pragma mark 放大、缩放
- (IBAction)scale:(id)sender
{
    [self btnClickWithBlock:^{
        CGFloat scale = [sender tag] == 20 ? 1.2 : 0.8;
        _btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);
    }];
}

#pragma mark 左、右旋转
- (IBAction)rotate:(id)sender
{
    int tag = [sender tag];
    if (10 == tag) {
        _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * -1);
    }
    else{
        _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * 1);
    }
    [self btnClickWithBlock:^{
        CGFloat scale = [sender tag] == 20 ? 1.2 : 0.8;
        _btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);
    }];
}

#pragma mark 重置
- (IBAction)reset:(id)sender
{
    //清空之前所有的形变状态(清除以前的旋转、缩放等状态)
    [self btnClickWithBlock:^{
        _btn.transform = CGAffineTransformIdentity;
    }];
}

- (void) btnClickWithBlock:(void (^)())block
{
    //动画 (头部 - 开始动画)
    [UIView beginAnimations:nil context:nil];
    //设置动画的执行时间
    [UIView setAnimationDuration:1.0];
    //调用 block
    block();
    //动画 (尾部 - 提交动画 - 执行动画)
    [UIView commitAnimations];
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值