@@ -368,9 +368,12 @@ - (void)adjustFrame {
368368 self.loadingView .bounds = self.scrollView .frame ;
369369 self.loadingView .center = CGPointMake (frame.size .width * 0.5 , frame.size .height * 0.5 );
370370 }
371+
371372
372373 // frame调整完毕,重新设置缩放
373374 if (self.photo .isZooming ) {
375+ self.scrollView .maximumZoomScale = 1 .0f ;
376+ self.scrollView .zoomScale = 1 .0f ;
374377 [self zoomToRect: self .photo.zoomRect animated: NO ];
375378 }
376379
@@ -386,12 +389,20 @@ - (CGPoint)centerOfScrollViewContent:(UIScrollView *)scrollView {
386389}
387390
388391- (void )zoomToRect : (CGRect)rect animated : (BOOL )animated {
389- [self .scrollView zoomToRect: rect animated: YES ];
392+ [self .scrollView zoomToRect: rect animated: animated ];
390393}
391394
392395#pragma mark - UIScrollViewDelegate
393396- (void )scrollViewDidScroll : (UIScrollView *)scrollView {
394- self.photo .offset = scrollView.contentOffset ;
397+ // 恢复位置
398+ if (self.photo .isZooming && scrollView.zoomScale == 1 .0f ) {
399+ scrollView.contentOffset = self.photo .offset ;
400+ }
401+
402+ // 只在上下滑动时记录位置
403+ if (scrollView.zoomScale == 1 .0f ) {
404+ self.photo .offset = scrollView.contentOffset ;
405+ }
395406}
396407
397408- (UIView *)viewForZoomingInScrollView : (UIScrollView *)scrollView {
@@ -404,7 +415,6 @@ - (void)scrollViewDidZoom:(UIScrollView *)scrollView {
404415
405416- (void )scrollViewDidEndZooming : (UIScrollView *)scrollView withView : (UIView *)view atScale : (CGFloat)scale {
406417 !self.zoomEnded ? : self.zoomEnded (self, scrollView.zoomScale );
407-
408418 [self setScrollMaxZoomScale: self .realZoomScale];
409419}
410420
0 commit comments