iOS学习笔记3-Affine变换

本文介绍如何在UIView中利用affine变换功能,特别是通过旋转操作来改变UIImageView的显示效果。通过编写一个简单的Swift代码示例,展示了如何在按钮点击后实现ImageView的旋转动画。


       今天我们来讲讲UIView中提供的对其内容进行affine变换的功能。具体来说,变换包括扩大、缩小、旋转、反转、平移等。

           要进行affine变换,其实就是想UIView的transform属性中设置CGAffineTransform的结构体。当然,这需要行列式的知识。为了方便初学者的理解,此处就绕过行列式的设置,直接利用UIKit库为我们提供的变形类型。

        此处,我做了一个旋转的demo。希望通过这个,能让初学者举一反三的学会其他的affine操作。

      

- (void)viewDidLoad
{
    [super viewDidLoad];

//初始化视图

    UIImage *catIMG = [UIImage imageNamed:@"cat"];
    catView = [[UIImageView alloc]initWithImage:catIMG];
    catView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    [self.view addSubview:catView];
//加入一个button,实现旋转操作的触发
    UIButton *changeView = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    changeView.frame = CGRectMake(0, 0, 100, 40);
    changeView.center = CGPointMake(160, 400);
    [changeView setTitle:@"Affine" forState:UIControlStateNormal];
    changeView.titleLabel.font = [UIFont boldSystemFontOfSize:12];
//利用此方法实现------Action方法,即旋转操作
    [changeView addTarget:self action:@selector(Action) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:changeView];
    
}
- (void)Action{

//利用CGAffineTransformMakeRotation(度数)实现UIImageView的旋转,当然,如UIlabe和UIButton等UIView子类也同样适用

    catView.transform = CGAffineTransformMakeRotation(90 * (M_1_PI / 180.0));
}

效果如如下:

点击button后,调用Action方法,实现旋转的效果图如下:


当然,CGAffineTransform的变换类型还有:

扩大缩小:CGAffineTransformMakeScale(宽度倍数,高度倍数)

左右反转:CGAffineTransformScale( 原CGAffineTransform对象,-1.0,1.0)

上下反转:CGAffineTransformScale( 原CGAffineTransform对象,1.0,-1.0)

平行移动:CGAffineTransformMakeTranslation(向右移动像素,向上移动像素)

两个函数的复合:CGAffineTransformContact( CGAffineTransform1,CGAffineTransform2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值