Răsfoiți Sursa

1.完成iOS图像预览,当只有一张图片时,滚动出现会黑色。

Pen Li 7 ani în urmă
părinte
comite
90d7359913
1 a modificat fișierele cu 36 adăugiri și 0 ștergeri
  1. 36 0
      common/InfinitePhoto/Controller/RAPhotoPreviewController.m

+ 36 - 0
common/InfinitePhoto/Controller/RAPhotoPreviewController.m

@@ -9,6 +9,31 @@
 #import "RAPhotoPreviewController.h"
 #import "PhotoPreviewCell.h"
 
+@interface RAPhotoItemPlaceHolder : NSObject <RAPhotoItemDelegate>
+
+@property (nonatomic,weak) id<RAPhotoItemDelegate> model;
+@property (nonatomic,weak) id<RAPhotoItemUIDelegate> delegate;
+@property (nonatomic,strong) UIImage *image;
+
+@end
+
+@implementation RAPhotoItemPlaceHolder
+
+- (instancetype)initWithModel:(id<RAPhotoItemDelegate>)model {
+    if (self = [super init]) {
+        self.model = model;
+    }
+    return self;
+}
+
+- (UIImage *)image {
+    return self.model.image;
+}
+
+@end
+
+#pragma mark - VC
+
 @interface RAPhotoPreviewController ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
 
 @property (nonatomic,assign) NSUInteger currentIndex;
@@ -29,6 +54,17 @@
 + (instancetype)ra_photoPreviewControllerWithPhotoItems:(NSArray<id<RAPhotoItemDelegate>> *)items offset:(NSUInteger)offset {
     
     RAPhotoPreviewController *vc = [[UIStoryboard storyboardWithName:@"PhotoList" bundle:nil] instantiateViewControllerWithIdentifier:@"RAPhotoPreviewController"];
+    
+    //  只有一张图片时,滑动会将View 和 Model 解绑,并且刷新View,导致看到黑色。
+    if (items.count == 1) {
+        NSMutableArray<id<RAPhotoItemDelegate>> *tmpArr = [NSMutableArray arrayWithArray:items];
+        id<RAPhotoItemDelegate> item = items[0];
+        RAPhotoItemPlaceHolder *placeHolder = [[RAPhotoItemPlaceHolder alloc] initWithModel:item];
+        [tmpArr addObject:placeHolder];
+        
+        items = tmpArr;
+    }
+    
     if (offset == 0 || offset >= items.count) {
         vc.photos = items;
     } else {