平常的开发过程中,当我们要改变视图的位置或者大小的时候,我们的第一反应一定是用 frame
这个属性去实现,但其实还有个更加简单的方法就是使用 transform
这个属性,一句代码就能完成。
1. 平移
括号中填写 x
和 y
移动数值。
self.image.transform = CGAffineTransformMakeTranslation(10, 10);
self.image.transform = CGAffineTransformTranslate(self.image.transform, 20, 0);
|
2. 缩放
括号中填写 x
和 y
缩放倍数。
self.image.transform = CGAffineTransformMakeScale(2, 2);
self.image.transform = CGAffineTransformScale(self.image.transform, 2, 2);
|
3. 旋转
括号中填写弧度 M_PI_4
= 45°
(绕中心旋转)。
self.image.transform = CGAffineTransformMakeRotation(M_PI_4);
self.image.transform = CGAffineTransformRotate(self.image.transform, M_PI_4);
|
4. AnchorPoint 设定
因为缩放或旋转默认都是围绕视图的中心点来进行的,通过 AnchorPoint
的设定,可以改变缩放或旋转围绕的点,下面是修改方法。
- (void)setAnchorPoint:(CGPoint)anchorPoint forView:(UIView *)view { CGPoint oldOrigin = view.frame.origin; view.layer.anchorPoint = anchorPoint; CGPoint newOrigin = view.frame.origin; CGPoint transition; transition.x = newOrigin.x - oldOrigin.x; transition.y = newOrigin.y - oldOrigin.y; view.center = CGPointMake (view.center.x - transition.x, view.center.y - transition.y); }
|
- (void)setDefaultAnchorPointforView:(UIView *)view { [self setAnchorPoint:CGPointMake(0.5f, 0.5f) forView:view]; }
|
好了,大致就这几种,其中上下两种方法的区别就是,当多次调用那一句代码时,一个会一直从原点开始变化,而另一个会从当前位置继续开始变化。