继承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 *)gestureRecognizer
13 {
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 *)gestureRecognizer
25 {
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 *)otherGestureRecognizer
37 {
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 }
相关推荐
因为种种原因,需要在iphone应用中实现图片查看功能,由于iphone屏幕支持多点触摸,于是是想到用“手势”来实现图片的实时缩放和移动。借鉴无所不在的internet网络资料之后,终于实现此一功能,过程如下。为方便大家...
IOS中利用UIImageView控件实现gif图片动画显示,借助ImageIO接口达到gif图片拆分效果,然后使用UIImageView动画接口播放一组图片达到动画效果; 最后将单个gif图片动画播放接口封装成UIView类,达到多个gif图片错开...
SRInfiniteCarouselView 只使用两个UIImageView实现无限旋转木马,支持本地图像,网址或混合图像。
通过给继承与 UIImageView 的类 CXGImageView 添加 CABasicAnimation 转动动画,实现播放器图片转动效果.
用两个 UIImageView 实现了无限轮播图
EEZoomableImageView - 为UIImageView提供全屏缩放功能
核心代码,使用UIImageView实现触摸绘图, 比起使用数组实现要强很多, 使用数组会很费内存,高手请过。minixx新手学习资料保存 //监听触摸事件 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ ...
本文介绍了iOS利用UIScrollView实现图片的缩放实例代码,分享给大家: 第一步:添加scrollView到控制器中 UIScrollView *scrollView = [[UIScrollView alloc] init]; scrollView.frame = CGRectMake(40, 250, 300...
使 UIScrollView 中的图片支持手势缩放。双击图片可以放大图片,或者pinch(捏合)手势可以缩放图片。基本原理是UIScrollView中嵌套UIScrollView,然后再嵌套UIImageView,可对UIImageView进行伸缩。
继承 UIImageView 实现的展示头像的 View,如果没有提供头像图片,这个组件会自动生成一个名字缩写的简单头像图片。
UIImageView Demo IOS 代码 图像控件
UIImageView、UIImageView基本用法、UIImageView详解,UIImageView常用方法
实现较为完整的图片浏览器功能,效果类似iPhone自带的相册应用。包括的功能有:手指划动切换图片,点击图片隐藏导航条,放大图片、分享图片、复制图片等等。显示的图片包括本地图片、相册图片、网络图片。并且能够...
《结合UIImageView实现图片的移动和缩放 》一文源代码
里面是封装好了一个图片视图类,能够捕捉到移动和点击操作。移动和点击的图片区域会被清除掉,完成橡皮擦的效果。
UIImageView-BetterFace, 一个UIImageView类别,让图片裁剪时显示出更好的效果 uiimageview-betterface一个UIImageView扩展,让图片切割的面显示更好v0.2 _stable中的最后一次更新: 添加UIImage BetterFace类别,...
UIImageView的方法实现简单动画
继承UIImageView 封装一个类,通过添加手势,对图片进行移动、缩放、旋转操作 。
UIImageView-旋转