UIImageView实现图片移动,缩放、旋转的代码片段
来源:互联网 发布:二端口纯电阻 编辑:程序博客网 时间:2024/05/17 08:20
继承UIImageView,重写init函数。
1 //旋转手势 2 UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer allor]initWithTarget:selft action:@selector(rotatePiece:)]; 3 [self addGestureRecognizer:rotationGesture]; 4 [rotationGesture release]; 5 6 //放大缩小手势 7 UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(scalePiece:)]; 8 [pinchGesture setDelegate:self]; 9 [self addGestureRecognizer:pinchGesture];10 [pinchGesture release];
1 - (void)adjustAnchorPointForGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer { 2 if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 3 UIView *piece = gestureRecognizer.view; 4 CGPoint locationInView = [gestureRecognizer locationInView:piece]; 5 CGPoint locationInSuperview = [gestureRecognizer locationInView:piece.superview]; 6 7 piece.layer.anchorPoint = CGPointMake(locationInView.x / piece.bounds.size.width, locationInView.y / piece.bounds.size.height); 8 piece.center = locationInSuperview; 9 }10 }11 12 - (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer13 {14 [self adjustAnchorPointForGestureRecognizer:gestureRecognizer];15 16 if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {17 [gestureRecognizer view].transform = CGAffineTransformRotate([[gestureRecognizer view] transform], [gestureRecognizer rotation]);18 rotate = [gestureRecognizer rotation];19 isMoveState = NO;20 [gestureRecognizer setRotation:0];21 }22 }23 24 - (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer25 {26 [self adjustAnchorPointForGestureRecognizer:gestureRecognizer];27 28 if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {29 [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);30 scale = [gestureRecognizer scale];31 isMoveState = NO;32 [gestureRecognizer setScale:1];33 }34 }35 36 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer37 {38 if (gestureRecognizer.view != self.view)39 return NO;40 41 if (gestureRecognizer.view != otherGestureRecognizer.view)42 return NO;43 44 if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] || [otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])45 return NO;46 47 return YES;48 }
//移动方法,仍是继承UIImageView重写Touch
initialPoint为全局CGPoint
1 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 2 3 UITouch *touch = [touches anyObject]; 4 5 if ([touch tapCount] == 1) 6 { 7 CGPoint currentPoint = [touch locationInView:self]; 8 9 if (isOne)10 {11 initialPoint = currentPoint;12 isOne = NO;13 }14 CGFloat offsetX = currentPoint.x + self.frame.origin.x - initialPoint.x;15 CGFloat offsetY = currentPoint.y + self.frame.origin.y - initialPoint.y;16 self.frame = CGRectMake(offsetX, offsetY, self.frame.size.width, self.frame.size.height);17 }18 }19 20 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {21 22 initialPoint = CGPointMake(0, 0);23 isOne = YES;24 }
0 0
- UIImageView实现图片移动,缩放、旋转的代码片段
- UIImageView实现图片移动,缩放、旋转的代码片段
- UIImageView实现图片的移动和缩放
- 结合UIImageView实现图片的移动和缩放
- 结合UIImageView实现图片的移动和缩放
- 结合UIImageView实现图片的移动和缩放
- 结合UIImageView实现图片的移动和缩放
- 结合UIImageView实现图片的移动和缩放
- 结合UIImageView实现图片的移动和缩放
- IOS 结合UIImageView实现图片的移动和缩放
- UIImageView实现图片的移动和缩放 【转】
- 结合UIImageView实现图片的移动和缩放
- [ios2] UIImageView实现图片的移动和缩放 【转】
- iOS 之UIImageView实现图片的移动和缩放
- UIIMageView 实现移动 缩放
- 图片 旋转,缩放,移动
- ios学习--结合UIImageView实现图片的移动和缩放(转)
- IOS UIImageView的旋转平移缩放
- Mahout-DistanceMeasure (数据点间的距离计算方法)
- mac 终端 常用命令
- Android 自定义控件打造史上最简单的侧滑菜单
- 4、NSString、NSArray、NSNumber
- HDU 4508 完全背包
- UIImageView实现图片移动,缩放、旋转的代码片段
- Extjs定义类的配置项
- php传值
- 编译和测试android的驱动程序学习笔记
- angularjs内联注入
- Java RMI之HelloWorld
- POJ3067(树状数组||线段树)
- 【新技术,学习、商业均可】HTML5 全新高大尚后台 bootstrap springmvc mybatis java企业级通框架源码入门
- n阶矩阵的乘法(C实现)