iOS CGAffineTransform简单应用
来源:互联网 发布:linux 搜索文件夹权限 编辑:程序博客网 时间:2024/05/22 03:35
最近用CGAffineTransform和手势做了一个简单的联系,不足的地方希望大家多多指点,在此先谢过大家了。
struct CGAffineTransform {
CGFloat a, b, c, d;
CGFloat tx, ty;
};
a:表示水平方向的缩放
d:表示垂直方向的缩放
tx:表示水平方向的位移
ty:表示垂直方向的位移
b和c不为0,肯定发生旋转
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 150)]; imageView.image = [UIImage imageNamed:@"image"]; [self.view addSubview:imageView]; //全参数设置 //CGAffineTransform transform = CGAffineTransformMake(0.1, 0.5, 0.1, 0.1, 30, 30); //imageView.transform = transform; //设置image的偏移量 //CGAffineTransform transform = CGAffineTransformTranslate(imageView.transform, 30, 150); //imageView.transform = transform; //设置image的缩放比例 //CGAffineTransform transform = CGAffineTransformScale(imageView.transform, 0.8, 0.8); //imageView.transform = transform; //设置image的旋转角度 //CGAffineTransform transform = CGAffineTransformMakeRotation(1); //imageView.transform = transform; //同上,区别在于可根据其他transform进行旋转 //imageView.transform = CGAffineTransformRotate(imageView.transform, 0.5);
下面是练习
创建底层view bgView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width)]; bgView.backgroundColor = [self randomColor:0]; bgView.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2); bgView.alpha = 1; [self.view addSubview:bgView];
创建效果视图 //旋转角度可与M_PI结合使用 NSMutableArray *array = [[NSMutableArray alloc]init]; CGFloat angle = M_PI*2/12; for (int i = 0; i < 12; i++) { UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; view.center = CGPointMake(bgView.frame.size.width/2, bgView.frame.size.width/2); view.layer.cornerRadius = 25.0; view.backgroundColor = [self randomColor:1]; [array addObject:view]; } for (int i = 0; i < array.count; i++) { UIView *view = [array objectAtIndex:i]; [bgView addSubview:view]; dispatch_async(dispatch_get_main_queue(), ^{ [UIView animateWithDuration:0.5 animations:^{ view.layer.anchorPoint = CGPointMake(3, 1); view.transform = CGAffineTransformMakeRotation(angle * i); }]; }); } //创建拖动手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panEvent:)]; pan.delegate = self; [bgView addGestureRecognizer:pan]; //创建向右轻扫手势 UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeEvent:)]; swipeRight.delegate = self; //设置轻扫手势识别器的方向 swipeRight.direction = UISwipeGestureRecognizerDirectionRight; [self.view addGestureRecognizer:swipeRight]; //创建向左轻扫手势 UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeEvent:)]; swipeLeft.delegate = self; //设置轻扫手势识别器的方向 swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; [self.view addGestureRecognizer:swipeLeft]; //创建向下轻扫手势 UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeEvent:)]; swipeDown.delegate = self; //设置轻扫手势识别器的方向 swipeDown.direction = UISwipeGestureRecognizerDirectionDown; [self.view addGestureRecognizer:swipeDown]; //创建向上轻扫手势 UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeEvent:)]; swipeUp.delegate = self; //设置轻扫手势识别器的方向 swipeUp.direction = UISwipeGestureRecognizerDirectionUp; [self.view addGestureRecognizer:swipeUp];
//拖拽手势事件-(void)panEvent:(UIPanGestureRecognizer *)sender{ if (sender.state == UIGestureRecognizerStateChanged) { if ([identifier isEqualToString:@"s"]) { bgView.transform = CGAffineTransformRotate(bgView.transform, 0.08); }else if ([identifier isEqualToString:@"n"]){ bgView.transform = CGAffineTransformRotate(bgView.transform, -0.08); } }else if (sender.state == UIGestureRecognizerStateEnded){ identifier = @"none"; }}//轻扫手势事件-(void)swipeEvent:(UISwipeGestureRecognizer *)sender{ CGPoint offSetPoint1 = [sender locationInView:self.view]; if ([identifier isEqualToString:@"none"]) { if (sender.direction == UISwipeGestureRecognizerDirectionUp) { if (offSetPoint1.x > self.view.frame.size.width/2) { NSLog(@"向上右"); identifier = @"n"; }else{ NSLog(@"向上左"); identifier = @"s"; } }else if (sender.direction == UISwipeGestureRecognizerDirectionDown){ if (offSetPoint1.x > self.view.frame.size.width/2) { NSLog(@"向下右"); identifier = @"s"; }else{ NSLog(@"向下左"); identifier = @"n"; } }else if (sender.direction == UISwipeGestureRecognizerDirectionLeft){ if (offSetPoint1.y > self.view.frame.size.height/2) { NSLog(@"向左下"); identifier = @"s"; }else{ NSLog(@"向左上"); identifier = @"n"; } }else if (sender.direction == UISwipeGestureRecognizerDirectionRight){ if (offSetPoint1.y > self.view.frame.size.height/2) { NSLog(@"向右下"); identifier = @"n"; }else{ NSLog(@"向右上"); identifier = @"s"; } } }}//响应多个手势执行以下代理- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ return YES;}
0 0
- iOS CGAffineTransform简单应用
- iOS基础CGAffineTransform的简单使用
- iOS---CGAffineTransform
- IOS CGAffineTransform
- IOS CGAffineTransform
- IOS CGAffineTransform一些用法
- iOS CGAffineTransform属性
- iOS CGAffineTransform属性
- iOS CGAffineTransform属性
- iOS CGAffineTransform详解
- iOS CGAffineTransform属性
- iOS 官方文档 CGAffineTransform
- [IOS 开发] CGAffineTransform属性
- iOS CGAffineTransform属性
- iOS CGAffineTransform属性
- iOS形变之CGAffineTransform
- iOS CGAffineTransform相关函数
- iOS CGAffineTransform 动画
- C++作业4
- 行内元素与块级元素比较全面的区别和转换
- 多进程与多线程区别
- 遍历Windows桌面上所有窗口
- poj1611(并查集)
- iOS CGAffineTransform简单应用
- Android必知必会-Fragment监听返回键事件
- 【概念混淆】取余运算和取模运算
- mysql5.7在多列索引 in条件查询的优化
- 使用AndroidEventBus
- [zz]css绝对定位、相对定位和文档流的那些事
- Eclipse JEE中Server Options作用
- [Platform]Phantom -- Programmable Security Controller
- maven pom.xml详解