فهرست منبع

1.修复RA Image Photo List选择退出后再次进入Delete不正确。

Pen Li 9 سال پیش
والد
کامیت
a9bc974593

BIN
RA Image/RA Image.xcodeproj/project.xcworkspace/xcuserdata/macmini1.xcuserdatad/UserInterfaceState.xcuserstate


+ 9 - 8
RA Image/RA Image/PhotoListViewController.m

@@ -61,12 +61,18 @@
     layout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);
     layout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);
 }
 }
 
 
+- (NSMutableArray *)selectedPhotos {
+    NSArray *arr = [self.photos filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"check==YES"]];
+    return [arr mutableCopy];
+}
+
 #pragma mark - Button Action
 #pragma mark - Button Action
 
 
 - (IBAction)deleteBtnClick:(UIButton *)sender {
 - (IBAction)deleteBtnClick:(UIButton *)sender {
-    if (self.selectedPhotos.count == 0) {
-        return;
-    }
+//    if (self.selectedPhotos.count == 0) {
+//        return;
+//    }
+   
 
 
     for (NSMutableDictionary *item in self.selectedPhotos) {
     for (NSMutableDictionary *item in self.selectedPhotos) {
         NSString *path = [item objectForKey:@"path"];
         NSString *path = [item objectForKey:@"path"];
@@ -143,11 +149,6 @@
     [item setValue:[NSNumber numberWithBool:!check] forKey:@"check"];
     [item setValue:[NSNumber numberWithBool:!check] forKey:@"check"];
     [self.photos replaceObjectAtIndex:indexPath.row withObject:item];
     [self.photos replaceObjectAtIndex:indexPath.row withObject:item];
     cell.checkBtn.selected = !check;
     cell.checkBtn.selected = !check;
-    if (!check) {
-        [self.selectedPhotos addObject:item];
-    } else {
-        [self.selectedPhotos removeObject:item];
-    }
 }
 }
 
 
 
 

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

@@ -7,6 +7,7 @@
 //
 //
 
 
 #import "TakePhotoPreviewController.h"
 #import "TakePhotoPreviewController.h"
+#import "const.h"
 
 
 @interface TakePhotoPreviewController ()<UIScrollViewDelegate>
 @interface TakePhotoPreviewController ()<UIScrollViewDelegate>
 
 
@@ -35,8 +36,12 @@
 - (void)viewDidLayoutSubviews {
 - (void)viewDidLayoutSubviews {
     [super viewDidLayoutSubviews];
     [super viewDidLayoutSubviews];
     
     
-    self.imgView.frame = CGRectMake(0, 70, CGRectGetWidth(self.previewScroll.frame), CGRectGetHeight(self.previewScroll.frame) - 150);
+    CGSize size = [self imgViewOriginSize];
     
     
+    CGRect frame = CGRectMake(0, 70, size.width, size.height);
+    
+    self.imgView.frame = frame;
+    // CGRectMake(0, 70, CGRectGetWidth(self.previewScroll.frame), CGRectGetHeight(self.previewScroll.frame) - 150)
 }
 }
 
 
 - (BOOL)prefersStatusBarHidden {
 - (BOOL)prefersStatusBarHidden {
@@ -48,6 +53,19 @@
     // Dispose of any resources that can be recreated.
     // Dispose of any resources that can be recreated.
 }
 }
 
 
+- (CGSize)imgViewOriginSize {
+    CGFloat width = CGRectGetWidth(self.previewScroll.bounds);
+    CGFloat height = CGRectGetHeight(self.previewScroll.bounds);
+    CGFloat w = self.preImage.size.width;
+    CGFloat h = self.preImage.size.height;
+    // 根据图片大小和ScrollView大小等比缩放,使ScrollView容得下图片
+    float factor = MAX(w / width, h / height);
+    factor = 1 / factor;
+    
+    CGSize size = CGSizeMake(w * factor, h * factor);
+    return size;
+}
+
 - (UIImageView *)imgView {
 - (UIImageView *)imgView {
     if (!_imgView) {
     if (!_imgView) {
         _imgView = [[UIImageView alloc] initWithImage:self.preImage];
         _imgView = [[UIImageView alloc] initWithImage:self.preImage];
@@ -70,15 +88,19 @@
 }
 }
 
 
 - (UIImage *)captureImageWithImage:(UIImage *)image inRect:(CGRect)rect {
 - (UIImage *)captureImageWithImage:(UIImage *)image inRect:(CGRect)rect {
-    CGFloat scale = [UIScreen mainScreen].scale;
+    
+    CGFloat scale = image.scale;
     rect.origin.x *= scale;
     rect.origin.x *= scale;
     rect.origin.y *= scale;
     rect.origin.y *= scale;
     rect.size.height *= scale;
     rect.size.height *= scale;
     rect.size.width *= scale;
     rect.size.width *= scale;
     CGImageRef imgRef = CGImageCreateWithImageInRect(image.CGImage, rect);
     CGImageRef imgRef = CGImageCreateWithImageInRect(image.CGImage, rect);
-    UIImage *img = [UIImage imageWithCGImage:imgRef];
+    UIImage *img = [UIImage imageWithCGImage:imgRef scale:0 orientation:3];
     CGImageRelease(imgRef);
     CGImageRelease(imgRef);
     return img;
     return img;
+    
+    
+    
 }
 }
 
 
 - (IBAction)retakeBtnClick:(UIButton *)sender {
 - (IBAction)retakeBtnClick:(UIButton *)sender {
@@ -90,8 +112,20 @@
 
 
 - (IBAction)usePhotoClick:(UIButton *)sender {
 - (IBAction)usePhotoClick:(UIButton *)sender {
     if (self.photoHandler) {
     if (self.photoHandler) {
-        UIImage *img = [self captureImageInView:self.view];
-        img = [self captureImageWithImage:img inRect:self.editContainer.frame];
+        
+        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);
+        
+        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);
+        
+        
+        UIImage *img = [self captureImageWithImage:self.preImage inRect:clipImgRect];
         self.photoHandler(img);
         self.photoHandler(img);
     }
     }
     [self.navigationController popViewControllerAnimated:YES];
     [self.navigationController popViewControllerAnimated:YES];
@@ -119,7 +153,7 @@
     //    size.height = size.height * pinch.scale;
     //    size.height = size.height * pinch.scale;
     size = imgv.frame.size;// bounds 和 frame 不一致
     size = imgv.frame.size;// bounds 和 frame 不一致
     CGSize itemSize = self.editContainer.frame.size;
     CGSize itemSize = self.editContainer.frame.size;
-    
+    DebugLog(@"size %@",[NSValue valueWithCGSize:size]);
     if (size.height < itemSize.height || size.width < itemSize.width) { // 禁止缩小得比原图小
     if (size.height < itemSize.height || size.width < itemSize.width) { // 禁止缩小得比原图小
         imgv.transform = CGAffineTransformIdentity;
         imgv.transform = CGAffineTransformIdentity;
         size = imgv.frame.size;
         size = imgv.frame.size;