平常的开发过程中,当我们要改变视图的位置或者大小的时候,我们的第一反应一定是用
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
的设定,可以改变缩放或旋转围绕的点,下面是修改方法。
/**
设置缩放或旋转围绕的点
@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];
}
好了,大致就这几种,其中上下两种方法的区别就是,当多次调用那一句代码时,一个会一直从原点开始变化,而另一个会从当前位置继续开始变化。
将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。