|
|
@@ -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 {
|