ios - Pinch To Zoom Effect on UIImageView inside scrollView? -


i'm using storyboard (ios 6.0) create photo gallery viewer app. how imageviewcontroller set in storyboard:

enter image description here

i've made sure enable userinteraction , multiple touches on both imageview , scrollview. want is, on pinch want zoom imageview (maximum scale 3) , able pan around. have, however, though pinch gesture detected scale not change.

- (ibaction)imagepinched:(id)sender {  if (pinchrecognizer.state == uigesturerecognizerstateended || pinchrecognizer.state == uigesturerecognizerstatechanged) {      nslog(@"gesture.scale = %f", pinchrecognizer.scale);      cgfloat currentscale = self.fullscreenview.frame.size.width / self.fullscreenview.bounds.size.width;     cgfloat newscale = currentscale * pinchrecognizer.scale;      if (newscale < 1) {         newscale = 1;     }     if (newscale > 3) {         newscale = 3;     }      cgaffinetransform transform = cgaffinetransformmakescale(newscale, newscale);         self.fullscreenview.transform = transform;         pinchrecognizer.scale = 1;     }  } 

most questions , tutorials online deal programmatically creating views , doing this, less code better (in eyes). what's best way work storyboard? thank in advance!!!


updated:

here full .m file code:

- (void)viewdidload {     [super viewdidload];      //assign image controller's imageview     fullscreenview.image = [uiimage imagenamed:imagestring];      //allows single , double tap work     [singletaprecognizer requiregesturerecognizertofail: doubletaprecognizer]; }  - (ibaction)imagetapped:(id)sender {      nslog(@"image tapped.");      //on tap, fade out viewcontroller twitter.app     [self dismissviewcontrolleranimated:yes completion:nil]; }  - (ibaction)imagedoubletapped:(id)sender {      nslog(@"image double tapped.");      //on double tap zoom imageview fill in screen.     [fullscreenview setcontentmode:uiviewcontentmodescaleaspectfill]; }  - (ibaction)imagepinched:(id)sender {      if (pinchrecognizer.state == uigesturerecognizerstateended || pinchrecognizer.state == uigesturerecognizerstatechanged) {          nslog(@"gesture.scale = %f", pinchrecognizer.scale);          cgfloat currentscale = self.fullscreenview.frame.size.width / self.fullscreenview.bounds.size.width;         cgfloat newscale = currentscale * pinchrecognizer.scale;          if (newscale < 1) {             newscale = 1;         }         if (newscale > 3) {             newscale = 3;         }          cgaffinetransform transform = cgaffinetransformmakescale(newscale, newscale);         self.fullscreenview.transform = transform;         pinchrecognizer.scale = 1;     } }  - (uiview *)viewforzoominginscrollview:(uiscrollview *)scrollview {     return self.fullscreenview; }   -(void)scrollviewdidendzooming:(uiscrollview *)scrollview withview:(uiview *)view atscale:(float)scale {  }  - (void)didreceivememorywarning {     [super didreceivememorywarning];     // dispose of resources can recreated. }  @end 

i think better solution in apple documentation

- (uiview *)viewforzoominginscrollview:(uiscrollview *)scrollview  {      return self.imageview;  } - (void)viewdidload {      [super viewdidload];      self.scrollview.minimumzoomscale=0.5;      self.scrollview.maximumzoomscale=6.0;      self.scrollview.contentsize=cgsizemake(1280, 960);      self.scrollview.delegate=self;  } 

check apple documentation


Comments