Procházet zdrojové kódy

1.修改RA Image照片预览界面图片缩放方式。

Pen Li před 9 roky
rodič
revize
b8fcfff758

binární
RA Image/RA Image.xcodeproj/project.xcworkspace/xcuserdata/macmini1.xcuserdatad/UserInterfaceState.xcuserstate


+ 28 - 6
RA Image/RA Image/TakePhotoPreviewController.m

@@ -116,15 +116,29 @@
         
         CGRect imgRect = self.imgView.frame;
         CGRect editRect = self.editContainer.frame;
-        CGRect screenRect = self.view.bounds;
-        CGFloat screen_img_x = (CGRectGetWidth(imgRect) - CGRectGetWidth(screenRect)) * 0.5;
-        CGFloat screen_img_y = (CGRectGetHeight(imgRect) - CGRectGetHeight(screenRect)) * 0.5;
-        CGRect rect = CGRectMake(screen_img_x + editRect.origin.x, screen_img_y + editRect.origin.y, editRect.size.width, editRect.size.height);
+//        CGRect screenRect = self.view.bounds;
+//        CGFloat screen_img_x = (CGRectGetWidth(imgRect) - CGRectGetWidth(screenRect)) * 0.5;
+//        CGFloat screen_img_y = (CGRectGetHeight(imgRect) - CGRectGetHeight(screenRect)) * 0.5;
+//        CGRect rect = CGRectMake(screen_img_x + editRect.origin.x, screen_img_y + editRect.origin.y, editRect.size.width, editRect.size.height);
+//        
+//        CGFloat scale = self.preImage.size.width / CGRectGetWidth(imgRect);
+//        
+//        CGRect clipImgRect = CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale);
+  
+        CGPoint contentOffset = self.previewScroll.contentOffset;
+        CGRect clipRect = CGRectMake(editRect.origin.x + contentOffset.x, editRect.origin.y + contentOffset.y - imgRect.origin.y, editRect.size.width, editRect.size.height);
         
-        CGFloat scale = self.preImage.size.width / CGRectGetWidth(imgRect);
+        CGFloat w = CGImageGetWidth(self.preImage.CGImage);
+        CGFloat h = CGImageGetHeight(self.preImage.CGImage);
         
-        CGRect clipImgRect = CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale);
+        CGFloat xp = clipRect.origin.x / imgRect.size.width;
+        CGFloat yp = clipRect.origin.y / imgRect.size.height;
+        CGFloat wp = clipRect.size.width / imgRect.size.width;
+        CGFloat hp = clipRect.size.height / imgRect.size.height;
         
+        CGSize size = self.preImage.size;
+         CGRect clipImgRect = CGRectMake(size.width * xp, size.height * yp, size.width * wp, size.height * hp);
+//        CGRect clipImgRect = CGRectMake(w * xp, h * yp, h * hp, w * wp);
         
         UIImage *img = [self captureImageWithImage:self.preImage inRect:clipImgRect];
         self.photoHandler(img);
@@ -138,6 +152,14 @@
     return self.imgView;
 }
 
+- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
+    
+    CGRect imgRect = self.imgView.frame;
+    CGSize contentSize = scrollView.contentSize;
+    contentSize.height += imgRect.origin.y;
+    scrollView.contentSize = contentSize;
+}
+
 #pragma mark - pinch
 
 - (void)imageViewPinch:(UIPinchGestureRecognizer *)pinch{