i'm using storyboard (ios 6.0) create photo gallery viewer app. how imageviewcontroller set in storyboard:
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; }
Comments
Post a Comment