iOS 开发iOS Developerios实用开发技巧

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

2017-03-20  本文已影响607人  爱吃鸭梨的猫
Xcode

平常的开发过程中,当我们要改变视图的位置或者大小的时候,我们的第一反应一定是用 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];
}

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

将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

我的传送门: 博客简书微博GitHub

上一篇 下一篇

猜你喜欢

热点阅读