iOS开发学习笔记(二)—— 让图片“动”起来!

本文详细介绍了如何使用Objective-C在iOS环境中通过frame、bounds、center和transform来实现UIView控件的位置与大小变化。通过实例演示了图片的上下位移、左右旋转及放大缩小的操作。
摘要由CSDN通过智能技术生成

在IOS中,实现控件位置,大小变化的方式有很多,比如frame,bounds,center,transform等等,今天有空就整理了一下,这几种方式。


1.frame:UIView的框架,既可以改变控件的位置,也可以改变控件的大小;


2.bounds:顾名思义一般是用来改变空间的大小,值得注意的是虽然frame也可以改变控件的大小,但是两者的放大点却不一样,frame的放大点是UIView的左上角,而bounds则是以UI View的中心点进行放大。


3.center:它是CGPoint类型的,因此它只有一对x,y值,也就是说它只能改变控件的位置,而且同样的是以控件的中心点为基点的。


4.transform:它主要可以用来实现控件的一些变换,这些变换,包括了位移,旋转,缩放,放大等。


通过比较我们发现transform这个属性,可以几乎同时实现前三点所做到的事情,因此,我们就把这次的任务交给它啦!


首先还是搭建UI界面:


由图可知,我们总共需要一个UIImageView和八个UIButton,在.m文件中通过拖线的方式,声明好几个按钮的点击事件以及imageView:

@property (weak, nonatomic) IBOutlet UIImageView *head;
- (IBAction)down;

- (IBAction)up;
- (IBAction)leftRotate;
- (IBAction)max;
- (IBAction)min;
- (IBAction)rightRotate;
- (IBAction)left;

- (IBAction)right;


首先,实现图片向上移动的功能:

<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; font-family: Menlo;">- (<span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">IBAction</span>)up {</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; font-family: Menlo; color: rgb(61, 29, 129);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">    </span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">self</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">.</span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">head</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">.</span><span style="font-variant-ligatures: no-common-ligatures; color: #703daa">transform</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> = </span>CGAffineTransformTranslate<span style="font-variant-ligatures: no-common-ligatures; color: #000000">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">self</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">.</span><span style="font-variant-ligatures: no-common-ligatures; color: #4f8187">head</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">.</span><span style="font-variant-ligatures: no-common-ligatures; color: #703daa">transform</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">, </span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">0</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">, -</span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">50</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">);</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; font-family: Menlo;">}</p>

CGAffineTransformTranslate(self.head.transform,0, -50):第一个参数是获取需要改变的transform,第二,第三个参数就是将需要位移的具体值赋给transform,也就是坐标的改变量x,y。


那么以此类推,上下位移修改的是y值,那么左右位移修改的就是x的值了。


接下来是左右旋转(以左旋转为例):

- (IBAction)leftRotate {
   
    self.head.transform = CGAffineTransformRotate(self.head.transform, M_PI_4);
}

CGAffineTransformRotate(self.head.transform,M_PI_4):与上一个方法类似,也是将第二个参数---旋转角度赋给transform。


最后是放大缩小:

- (IBAction)max {
    self.head.transform = CGAffineTransformScale(self.head.transform, 1.5, 1.5);
}

CGAffineTransformScale(self.head.transform,1.5, 1.5):经过前两个方法的简介,相信这个方法大家都能懂了吧,就是将transform的大小变为原来的1.5倍。


Ok!就是这么简单,就可以实现图片的翻转腾挪了!










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值