[CPP]View PlainCopy
- Add all the gestures
- -(void) Addgesturerecognizertoview: (UIView *) View
- {
- //Rotation gestures
- Uirotationgesturerecognizer *rotationgesturerecognizer = [[Uirotationgesturerecognizer alloc] InitWithTarget:self Action: @selector (Rotateview:)];
- [View Addgesturerecognizer:rotationgesturerecognizer];
- //Zoom gesture
- Uipinchgesturerecognizer *pinchgesturerecognizer = [[Uipinchgesturerecognizer alloc] initwithtarget:self action:@ Selector (Pinchview:)];
- [View Addgesturerecognizer:pinchgesturerecognizer];
- //Mobile gestures
- Uipangesturerecognizer *pangesturerecognizer = [[Uipangesturerecognizer alloc] initwithtarget:self action: @selector ( Panview:)];
- [View Addgesturerecognizer:pangesturerecognizer];
- }
- Handling Rotation gestures
- -(void) Rotateview: (Uirotationgesturerecognizer *) Rotationgesturerecognizer
- {
- UIView *view = Rotationgesturerecognizer.view;
- if (rotationgesturerecognizer.state = = Uigesturerecognizerstatebegan | | rotationgesturerecognizer.state = = uigesturerecognizerstatechanged) {
- View.transform = Cgaffinetransformrotate (View.transform, rotationgesturerecognizer.rotation);
- [Rotationgesturerecognizer setrotation:0];
- }
- }
- Handling Zoom gestures
- -(void) Pinchview: (Uipinchgesturerecognizer *) Pinchgesturerecognizer
- {
- UIView *view = Pinchgesturerecognizer.view;
- if (pinchgesturerecognizer.state = = Uigesturerecognizerstatebegan | | pinchgesturerecognizer.state = = uigesturerecognizerstatechanged) {
- View.transform = Cgaffinetransformscale (View.transform, Pinchgesturerecognizer.scale, PinchGestureRecognizer.scale );
- Pinchgesturerecognizer.scale = 1;
- }
- }
- Handling Drag gestures
- -(void) Panview: (Uipangesturerecognizer *) Pangesturerecognizer
- {
- UIView *view = Pangesturerecognizer.view;
- if (pangesturerecognizer.state = = Uigesturerecognizerstatebegan | | pangesturerecognizer.state = = uigesturerecognizerstatechanged) {
- Cgpoint translation = [Pangesturerecognizer TranslationInView:view.superview];
- [View SetCenter: (Cgpoint) {view.center.x + translation.x, View.center.y + translation.y}];
- [Pangesturerecognizer Settranslation:cgpointzero InView:view.superview];
- }
- }
This only requires a simple call
[CPP]View PlainCopy
- [Self addgesturerecognizertoview:view];
- If you're dealing with a picture, don't forget.
- [ImageView Setuserinteractionenabled:yes];
- [ImageView Setmultipletouchenabled:yes];
Done.
Specific use:
Define variables inside the. h file
[CPP]View PlainCopy
- @interface yourviewcontroller:uiviewcontroller<uigesturerecognizerdelegate>
- {
- CGFloat Lastscale;
- CGRect Oldframe; //Save the original size of the picture
- CGRect Largeframe; //Determine the maximum extent of the image magnification
- }
and add it to the viewdidload.
[CPP]View PlainCopy
- -(void) Viewdidload
- {
- [Super Viewdidload];
- Showimgview = [[Uiimageview alloc] Initwithframe:<span class="S1" >CGRectMake</span> (<span class="S2" >0</span>, <span class="S2" >0</SPAN>, 320, 480)];
- [Showimgview Setmultipletouchenabled:yes];
- [Showimgview Setuserinteractionenabled:yes];
- [Showimgview setimage:[uiimage imagenamed:@"1.jpg"];
- Oldframe = Showimgview.frame;
- Largeframe = CGRectMake (0-screensize.width, 0-screensize.height, 3 * oldFrame.size.width, 3 * oldFrame.size.height);
- [Self addgesturerecognizertoview:showimgview];
- [Self.view Addsubview:showimgview];
This will enable the
However, this is not enough.
Because the inside of the scale and movement, etc. did not make a corresponding judgment.
Because the code is simple, the extension is also very convenient.
Modified the scaling code, added the restrictions, and other similar
[CPP]View PlainCopy
- Handling Zoom gestures
- -(void) Pinchview: (Uipinchgesturerecognizer *) Pinchgesturerecognizer
- {
- UIView *view = Pinchgesturerecognizer.view;
- if (pinchgesturerecognizer.state = = Uigesturerecognizerstatebegan | | pinchgesturerecognizer.state = = uigesturerecognizerstatechanged) {
- View.transform = Cgaffinetransformscale (View.transform, Pinchgesturerecognizer.scale, PinchGestureRecognizer.scale );
- if (ShowImgView.frame.size.width < oldFrame.size.width) {
- Showimgview.frame = Oldframe;
- //Make the picture smaller than the original
- }
- if (ShowImgView.frame.size.width > 3 * oldFrame.size.width) {
- Showimgview.frame = Largeframe;
- }
- Pinchgesturerecognizer.scale = 1;
- }
- }
That's good. The maximum and minimum proportions of the picture are guaranteed.
Reference article: http://apluck.iteye.com/blog/1781607
Use gestures to scale, rotate, and move Uiimageview