iphone - Center an UIImageView on the screen when zoom out -


i have uiimageview inside uiscrollview. want user can zoom , navigate image.

this work code:

//img uiimageview //scroller uiscrollview  - (uiview *)viewforzoominginscrollview:(uiscrollview *)scrollview { return img;  } - (void)viewdidload {    [super viewdidload];    uiimage *image = [uiimage imagenamed:@"map_screen.png"];    img = [[uiimageview alloc] initwithimage:image];    scroller.delegate = self;    scroller.autoresizessubviews = yes;    scroller.autoresizingmask = uiviewautoresizingflexibleheight | uiviewautoresizingflexiblewidth;    scroller.contentsize = img.frame.size;    scroller.scrollenabled = yes;    scroller.directionallockenabled = no;    scroller.userinteractionenabled = yes;     cgsize ivsize = img.frame.size;    cgsize ssize = scroller.frame.size;     float scalex = ssize.width / ivsize.width;    float scaley = ssize.height / ivsize.height;    scroller.minimumzoomscale = fmin(1.0, fmax(scaley, scalex));    scroller.zoomscale = fmin(1.0, fmax(scalex, scaley));    [scroller addsubview:img];    img.userinteractionenabled = yes; } 

all works, happened: minimum zoom height of screen. image has width bigger height, want minumum zoom width.

if write

scroller.minimumzoomscale = fmin(1.0, scalex); 

works, when user zooms out, image not @ center of screen, @ top.

i've tried this

cgpoint scrollcenter = [scroller center]; [img setcenter:cgpointmake(scrollcenter.x, scrollcenter.y)]; 

or

img.center = scroller.center; 

but solution, image not completly scrollable, , if zoom out, stay again @ top of screen, not completly visible!

what can fix it?

you have manually while zooming in progress using scrollviewdidzoom delegate function... like

- (void)scrollviewdidzoom:(uiscrollview *)scrollview {      // center image becomes smaller size of screen     cgsize boundssize = scrollview.bounds.size;     cgrect frametocenter = imageview.frame;      // center horizontally     if (frametocenter.size.width < boundssize.width)     {         frametocenter.origin.x = (boundssize.width - frametocenter.size.width) / 2;     } else {         frametocenter.origin.x = 0;     }      // center vertically     if (frametocenter.size.height < boundssize.height)      {         frametocenter.origin.y = (boundssize.height - frametocenter.size.height) / 2;     } else {         frametocenter.origin.y = 0;     }      imageview.frame = frametocenter;  } 

Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -