ios - UIImageView is cut off on right side within PageControl after zooming -
my image cut off on right side after zooming in. if don't set offset cgrect make, not cut off, want image centered on screen. how can have image centered , not cut off right portion after zooming?
- (void)viewdidload { [super viewdidload]; // additional setup after loading view, typically nib. self.view.backgroundcolor = [uicolor graycolor]; uiscrollview *mainscrollview = [[uiscrollview alloc] initwithframe:self.view.bounds]; mainscrollview.pagingenabled = yes; mainscrollview.showshorizontalscrollindicator = no; mainscrollview.showsverticalscrollindicator = no; cgrect innerscrollframe = mainscrollview.bounds; (nsinteger = 0; < 2; i++) { uiimageview *imageforzooming = [[uiimageview alloc] initwithimage:[uiimage imagenamed:[nsstring stringwithformat:@"page%d", + 1]]]; imageforzooming.tag = view_for_zoom_tag; imageforzooming.frame = cgrectmake(50, 0, imageforzooming.bounds.size.width, imageforzooming.bounds.size.height); uiscrollview *pagescrollview = [[uiscrollview alloc] initwithframe:innerscrollframe]; pagescrollview.minimumzoomscale = 0.5f; pagescrollview.maximumzoomscale = 1.0f; pagescrollview.contentsize = imageforzooming.bounds.size; pagescrollview.delegate = self; [pagescrollview addsubview:imageforzooming]; [mainscrollview addsubview:pagescrollview]; if (i < 1) { innerscrollframe.origin.x += innerscrollframe.size.width; } pagescrollview.zoomscale = 0.5f; } mainscrollview.contentsize = cgsizemake(innerscrollframe.origin.x + innerscrollframe.size.width, mainscrollview.bounds.size.height); [self.view addsubview:mainscrollview]; } - (uiview *)viewforzoominginscrollview:(uiscrollview *)scrollview { return [scrollview viewwithtag:view_for_zoom_tag]; }
edit: here view hierarchy
- view
- mainscrollview
- innerscrollframe
- pagescrollview
- imageforzooming
- pagescrollview
- innerscrollframe
- pagescrollview
- imageforzooming
- pagescrollview
- innerscrollframe
- mainscrollview
for else having same problem in future, did add following uiscrollviewdelegate protocol:
- (void)scrollviewdidzoom:(uiscrollview *)scrollview { uiview *subview = [scrollview.subviews objectatindex:0]; cgfloat offsetx = (scrollview.bounds.size.width > scrollview.contentsize.width) ? (scrollview.bounds.size.width - scrollview.contentsize.width) * 0.5 : 0.0; cgfloat offsety = (scrollview.bounds.size.height > scrollview.contentsize.height) ? (scrollview.bounds.size.height - scrollview.contentsize.height) * 0.5 : 0.0; subview.center = cgpointmake(scrollview.contentsize.width * 0.5 + offsetx, scrollview.contentsize.height * 0.5 + offsety); }
i found answer here: center content of uiscrollview when smaller
so image centered after zooming instead of applying offset applied. worked charm. when zoom, none of image cut off on either page control, , can center image @ beginning of view.
Comments
Post a Comment