diff --git a/Classes/IDMPhotoBrowser.h b/Classes/IDMPhotoBrowser.h index 397a0d4b..30643b9b 100644 --- a/Classes/IDMPhotoBrowser.h +++ b/Classes/IDMPhotoBrowser.h @@ -43,6 +43,7 @@ @property (nonatomic, weak) UIImage *leftArrowImage, *leftArrowSelectedImage; @property (nonatomic, weak) UIImage *rightArrowImage, *rightArrowSelectedImage; @property (nonatomic, weak) UIImage *actionButtonImage, *actionButtonSelectedImage; +@property (nonatomic, strong) UIImage *failureImage; // View customization @property (nonatomic) BOOL displayDoneButton; diff --git a/Classes/IDMPhotoBrowser.m b/Classes/IDMPhotoBrowser.m index 125785fa..808e35d9 100644 --- a/Classes/IDMPhotoBrowser.m +++ b/Classes/IDMPhotoBrowser.m @@ -135,6 +135,7 @@ @implementation IDMPhotoBrowser // Properties @synthesize displayDoneButton = _displayDoneButton, displayToolbar = _displayToolbar, displayActionButton = _displayActionButton, displayCounterLabel = _displayCounterLabel, useWhiteBackgroundColor = _useWhiteBackgroundColor, doneButtonImage = _doneButtonImage; @synthesize leftArrowImage = _leftArrowImage, rightArrowImage = _rightArrowImage, leftArrowSelectedImage = _leftArrowSelectedImage, rightArrowSelectedImage = _rightArrowSelectedImage, actionButtonImage = _actionButtonImage, actionButtonSelectedImage = _actionButtonSelectedImage; +@synthesize failureImage = _failureImage; @synthesize displayArrowButton = _displayArrowButton, actionButtonTitles = _actionButtonTitles; @synthesize arrowButtonsChangePhotosAnimated = _arrowButtonsChangePhotosAnimated; @synthesize forceHideStatusBar = _forceHideStatusBar; @@ -997,6 +998,7 @@ - (void)tilePages { page = [[IDMZoomingScrollView alloc] initWithPhotoBrowser:self]; page.backgroundColor = [UIColor clearColor]; page.opaque = YES; + page.failureImage = self.failureImage; [self configurePage:page forIndex:index]; [_visiblePages addObject:page]; diff --git a/Classes/IDMZoomingScrollView.h b/Classes/IDMZoomingScrollView.h index 4651735c..42beb296 100644 --- a/Classes/IDMZoomingScrollView.h +++ b/Classes/IDMZoomingScrollView.h @@ -26,9 +26,13 @@ IDMTapDetectingView *_tapView; // for background taps DACircularProgressView *_progressView; + UIImageView *_failureView; + UIImage *_failureImage; } @property (nonatomic, strong) IDMTapDetectingImageView *photoImageView; +@property (nonatomic, strong) UIImageView *failureView; +@property (nonatomic, strong) UIImage *failureImage; @property (nonatomic, strong) IDMCaptionView *captionView; @property (nonatomic, strong) id photo; @property (nonatomic) CGFloat maximumDoubleTapZoomScale; diff --git a/Classes/IDMZoomingScrollView.m b/Classes/IDMZoomingScrollView.m index 419ce4fd..9451377a 100644 --- a/Classes/IDMZoomingScrollView.m +++ b/Classes/IDMZoomingScrollView.m @@ -29,6 +29,7 @@ - (void)handleDoubleTap:(CGPoint)touchPoint; @implementation IDMZoomingScrollView @synthesize photoImageView = _photoImageView, photoBrowser = _photoBrowser, photo = _photo, captionView = _captionView; +@synthesize failureView = _failureView, failureImage = _failureImage; - (id)initWithPhotoBrowser:(IDMPhotoBrowser *)browser { if ((self = [super init])) { @@ -66,6 +67,10 @@ - (id)initWithPhotoBrowser:(IDMPhotoBrowser *)browser { _progressView.trackTintColor = browser.trackTintColor ? self.photoBrowser.trackTintColor : [UIColor colorWithWhite:0.2 alpha:1]; _progressView.progressTintColor = browser.progressTintColor ? self.photoBrowser.progressTintColor : [UIColor colorWithWhite:1.0 alpha:1]; [self addSubview:_progressView]; + + _failureView = [[UIImageView alloc] init]; + _failureView.contentMode = UIViewContentModeCenter; + [self addSubview:_failureView]; // Setup self.backgroundColor = [UIColor clearColor]; @@ -105,6 +110,8 @@ - (void)displayImage { self.contentSize = CGSizeMake(0, 0); + _failureView.hidden = YES; + // Get image from browser as it handles ordering of fetching UIImage *img = [self.photoBrowser imageForPhoto:_photo]; if (img) { @@ -149,6 +156,9 @@ - (void)setProgress:(CGFloat)progress forPhoto:(IDMPhoto*)photo { // Image failed so just show black! - (void)displayImageFailure { + _failureView.hidden = NO; + _failureView.frame = self.bounds; + _failureView.image = self.failureImage; [_progressView removeFromSuperview]; }