0%

【iOS 开发】利用 transform 使视图平移、缩放、旋转

平常的开发过程中,当我们要改变视图的位置或者大小的时候,我们的第一反应一定是用 frame 这个属性去实现,但其实还有个更加简单的方法就是使用 transform 这个属性,一句代码就能完成。


1. 平移

括号中填写 xy 移动数值。

/* 在原来的基础上移动(只移动一次) */
self.image.transform = CGAffineTransformMakeTranslation(10, 10);

/* 在移动后的基础上移动(可以一直移动) */
self.image.transform = CGAffineTransformTranslate(self.image.transform, 20, 0);

2. 缩放

括号中填写 xy 缩放倍数。

/* 在原来的基础上缩放(只缩放一次) */
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 的设定,可以改变缩放或旋转围绕的点,下面是修改方法。

/**
设置缩放或旋转围绕的点

@param anchorPoint 围绕的点
@param view 设置的视图
*/
- (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);
}
/**
将缩放或旋转围绕的点还原为默认

@param view 设置的视图
*/
- (void)setDefaultAnchorPointforView:(UIView *)view {
[self setAnchorPoint:CGPointMake(0.5f, 0.5f) forView:view];
}

好了,大致就这几种,其中上下两种方法的区别就是,当多次调用那一句代码时,一个会一直从原点开始变化,而另一个会从当前位置继续开始变化。