Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions SwipeView/SwipeView.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ typedef NS_ENUM(NSUInteger, SwipeViewAlignment)
@property (nonatomic, readonly) CGSize itemSize;
@property (nonatomic, assign) NSInteger itemsPerPage;
@property (nonatomic, assign) BOOL truncateFinalPage;
@property (nonatomic, assign) NSInteger itemsToPreloadForward;
@property (nonatomic, assign) NSInteger itemsToPreloadBackward;
@property (nonatomic, strong, readonly) NSArray *indexesForVisibleItems;
@property (nonatomic, strong, readonly) NSArray *visibleItemViews;
@property (nonatomic, strong, readonly) UIView *currentItemView;
Expand Down
27 changes: 25 additions & 2 deletions SwipeView/SwipeView.m
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ - (void)setUp
_wrapEnabled = NO;
_itemsPerPage = 1;
_truncateFinalPage = NO;
_itemsToPreloadForward = 0;
_itemsToPreloadBackward = 0;
_defersItemViewLoading = NO;
_vertical = NO;

Expand Down Expand Up @@ -569,14 +571,14 @@ - (void)updateLayout

- (void)layoutSubviews
{
[super layoutSubviews];
[self updateItemSizeAndCount];
[self updateScrollViewDimensions];
[self updateLayout];
if (_pagingEnabled && !_scrolling)
{
[self scrollToItemAtIndex:self.currentItemIndex duration:0.25];
}
[super layoutSubviews];
}

#pragma mark -
Expand Down Expand Up @@ -952,10 +954,22 @@ - (void)loadUnloadViews
[visibleIndices addObject:@(index)];
}

NSMutableSet *preloadedIndices = [NSMutableSet setWithCapacity:_itemsToPreloadForward + _itemsToPreloadBackward];
for (NSInteger i = 0; i <= _itemsToPreloadForward; i++) {
NSInteger index = [self clampedIndex:startIndex + i];
[preloadedIndices addObject:@(index)];
}

for (NSInteger i = 0; i <= _itemsToPreloadBackward; i++) {
NSInteger index = [self clampedIndex:startIndex - i];
[preloadedIndices addObject:@(index)];
}


//remove offscreen views
for (NSNumber *number in [_itemViews allKeys])
{
if (![visibleIndices containsObject:number])
if (![visibleIndices containsObject:number] || ![preloadedIndices containsObject:number])
{
UIView *view = _itemViews[number];
[self queueItemView:view];
Expand All @@ -973,6 +987,15 @@ - (void)loadUnloadViews
[self loadViewAtIndex:[number integerValue]];
}
}

//add preloadedViews
for (NSNumber *number in preloadedIndices) {
UIView *view = _itemViews[number];
if (view == nil) {
[self loadViewAtIndex:[number integerValue]];
}
}

}
}

Expand Down