Thursday 15 April 2010

objective c - How to add a Gesture Recogniser in imageview in iOS? -



objective c - How to add a Gesture Recogniser in imageview in iOS? -

i add together uipangesturerecognizer imageview gesture recognizer added imageview image panned in view want image panned within of imageview on in view how possible?

i write code on viewdidload

uipangesturerecognizer *pangesture=[[uipangesturerecognizer alloc]initwithtarget:self action:@selector(pangesturedetected:)]; [pangesture setdelegate:self]; [self.zoomimage addgesturerecognizer:pangesture];

and method is

- (void)pangesturedetected:(uipangesturerecognizer *)recognizer { uigesturerecognizerstate state = [recognizer state]; if (state == uigesturerecognizerstatebegan || state == uigesturerecognizerstatechanged) { cgpoint translation = [recognizer translationinview:recognizer.view]; [recognizer.view settransform:cgaffinetransformtranslate(recognizer.view.transform, translation.x, translation.y)]; [recognizer settranslation:cgpointzero inview:recognizer.view]; } }

then imageview image panned in view want image panned within of imageview if possible give me solution. here original imageview size as

and when added uipangesturerecognizer as image panned in view want zoom within of imageview size please give me solution that.

take uiscrollview , add together uiimageview within scrollview , pangesture on scrollview ..

set delegate scrollview , code

- (uiview*)viewforzoominginscrollview:(uiscrollview *)scrollview { // homecoming view want zoom homecoming self.zoomimage; } - (void)scrollviewdidzoom:(uiscrollview *)scrollview { // scroll view has zoomed, need re-center contents [self centerscrollviewcontents]; } - (void)centerscrollviewcontents { cgsize boundssize = scrollview.bounds.size; cgrect contentsframe = self.zoomimage.frame; if (contentsframe.size.width < boundssize.width) { contentsframe.origin.x = (boundssize.width - contentsframe.size.width) / 2.0f; } else { contentsframe.origin.x = 0.0f; } if (contentsframe.size.height < boundssize.height) { contentsframe.origin.y = (boundssize.height - contentsframe.size.height) / 2.0f; } else { contentsframe.origin.y = 0.0f; } self.zoomimage.frame = contentsframe; } - (void)scrollviewdoubletapped:(uitapgesturerecognizer*)recognizer { // location within image view tapped cgpoint pointinview = [recognizer locationinview:imageview]; // zoom scale that's zoomed in slightly, capped @ maximum zoom scale specified scroll view cgfloat newzoomscale = scrollview.zoomscale * 1.5f; newzoomscale = min(newzoomscale, scrollview.maximumzoomscale); // figure out rect want zoom to, zoom cgsize scrollviewsize = scrollview.bounds.size; cgfloat w = scrollviewsize.width / newzoomscale; cgfloat h = scrollviewsize.height / newzoomscale; cgfloat x = pointinview.x - (w / 2.0f); cgfloat y = pointinview.y - (h / 2.0f); cgrect recttozoomto = cgrectmake(x, y, w, h); [scrollview zoomtorect:recttozoomto animated:yes]; } - (void)scrollviewtwofingertapped:(uitapgesturerecognizer*)recognizer { // zoom out slightly, capping @ minimum zoom scale specified scroll view cgfloat newzoomscale = scrollview.zoomscale / 1.5f; newzoomscale = max(newzoomscale, scrollview.minimumzoomscale); [scrollview setzoomscale:newzoomscale animated:yes]; }

ios objective-c uipangesturerecognizer

No comments:

Post a Comment