182 lines
5.4 KiB
Objective-C
182 lines
5.4 KiB
Objective-C
//
|
|
// UMImageViewWithProgress.m
|
|
// UMCommunity
|
|
//
|
|
// Created by luyiyuan on 14/9/3.
|
|
// Copyright (c) 2014年 luyiyuan. All rights reserved.
|
|
//
|
|
|
|
#import "UMImageProgressView.h"
|
|
#import "UMComProgressView.h"
|
|
#import "UMComShowToast.h"
|
|
|
|
@interface UMImageProgressView ()
|
|
@property (nonatomic,strong) UMComProgressView *progressView;
|
|
@end
|
|
|
|
|
|
|
|
@implementation UMImageProgressView
|
|
|
|
|
|
|
|
- (id)initWithFrame:(CGRect)frame
|
|
{
|
|
self = [super initWithFrame:frame];
|
|
if (self) {
|
|
// Initialization code
|
|
|
|
self.progressView = [[UMComProgressView alloc] initWithColor:[UIColor whiteColor]];
|
|
self.progressView.center = CGPointMake(self.frame.size.width/2, self.frame.size.height/2+40);
|
|
[self addSubview:self.progressView];
|
|
self.progressView.progress = 0.0f;
|
|
self.imageLoaderDelegate = self;
|
|
|
|
}
|
|
return self;
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
// Only override drawRect: if you perform custom drawing.
|
|
// An empty implementation adversely affects performance during animation.
|
|
- (void)drawRect:(CGRect)rect
|
|
{
|
|
// Drawing code
|
|
}
|
|
*/
|
|
|
|
- (void) startImageLoad
|
|
{
|
|
[super startImageLoad];
|
|
self.thumImageView.center = CGPointMake(self.frame.size.width/2, self.frame.size.height/2-40);
|
|
self.progressView.center = CGPointMake(self.frame.size.width/2, self.frame.size.height/2+40);
|
|
if ([self ifNeedShowThumImage]) {
|
|
self.thumImageView.hidden = NO;
|
|
self.progressView.hidden = NO;
|
|
}else{
|
|
self.thumImageView.hidden = YES;
|
|
self.progressView.hidden = YES;
|
|
}
|
|
}
|
|
|
|
- (BOOL)ifNeedShowThumImage
|
|
{
|
|
if(!self.isCacheImage)
|
|
{
|
|
if (self.image) {
|
|
return NO;
|
|
}else{
|
|
return YES;
|
|
}
|
|
|
|
}else{
|
|
return NO;
|
|
}
|
|
}
|
|
|
|
- (void)cancelImageLoad
|
|
{
|
|
[super cancelImageLoad];
|
|
self.progressView.hidden = YES;
|
|
}
|
|
|
|
#pragma mark - UMComImageViewDelegate
|
|
- (void)umcomImageViewLoadedImageSizePercent:(float)percent imageView:(UMComImageView *)imageView
|
|
{
|
|
self.progressView.progress = percent;
|
|
|
|
[self.progressView setNeedsDisplay];
|
|
}
|
|
|
|
- (void)umcomImageViewLoadedImage:(UMComImageView *)imageView
|
|
{
|
|
self.progressView.hidden = YES;//zhangjunhua
|
|
self.thumImageView.hidden = YES;
|
|
UIScrollView * zoomView = (UIScrollView *)self.superview;
|
|
[self resetSizeWithURLImage:imageView];
|
|
if ([self.superview isKindOfClass:[UIScrollView class]]) {
|
|
zoomView.maximumZoomScale = 5;
|
|
}
|
|
//zhangjunhua---begin
|
|
zoomView.contentOffset = CGPointMake(0, 0);
|
|
zoomView.contentSize = CGSizeMake(0, 0);
|
|
CGRect org_rc = imageView.frame;
|
|
if (org_rc.size.height > zoomView.bounds.size.height) {
|
|
org_rc.origin.y = 0;
|
|
org_rc.origin.x = 0;
|
|
org_rc.size.height = imageView.image.size.height;
|
|
self.frame = org_rc;
|
|
zoomView.contentSize = imageView.bounds.size;
|
|
zoomView.contentOffset = CGPointMake(org_rc.origin.x, org_rc.origin.y);
|
|
}
|
|
//zhangjunhua---end
|
|
}
|
|
|
|
//- (void)umcomImageViewLoadedImage:(UMComImageView *)imageView
|
|
//{
|
|
// self.progressView.hidden = YES;
|
|
// self.thumImageView.hidden = YES;
|
|
// UIScrollView * zoomView = (UIScrollView *)self.superview;
|
|
// [self resetSizeWithURLImage:imageView];
|
|
// if ([self.superview isKindOfClass:[UIScrollView class]]) {
|
|
// zoomView.maximumZoomScale = 5;
|
|
// }
|
|
//}
|
|
- (void)umcomImageViewFailedToLoadImage:(UMComImageView *)imageView error:(NSError *)error
|
|
{
|
|
UIScrollView * zoomView = (UIScrollView *)self.superview;
|
|
if ([self.superview isKindOfClass:[UIScrollView class]]) {
|
|
zoomView.maximumZoomScale = 1;
|
|
}
|
|
self.progressView.hidden = YES;
|
|
[UMComShowToast showFetchResultTipWithError:error];
|
|
}
|
|
|
|
|
|
- (void)setThumImageViewUrl:(NSString *)urlString
|
|
{
|
|
if ([self ifNeedShowThumImage]) {
|
|
if (self.thumImageView == nil) {
|
|
UMComImageView *thumImageView = [[[UMComImageView imageViewClassName] alloc]initWithFrame:CGRectMake(0, 0, 80, 80)];
|
|
thumImageView.center = CGPointMake(self.frame.size.width/2, self.frame.size.height/2-40);
|
|
thumImageView.hidden = YES;
|
|
thumImageView.needCutOff = YES;
|
|
[self addSubview:thumImageView];
|
|
self.thumImageView = thumImageView;
|
|
self.progressView.center = CGPointMake(self.frame.size.width/2, self.frame.size.height/2+40);
|
|
}else{
|
|
self.thumImageView.hidden = NO;
|
|
self.progressView.center = CGPointMake(self.frame.size.width/2, self.frame.size.height/2+40);
|
|
}
|
|
[self.thumImageView setImageURL:urlString placeHolderImage:self.thumImageView.placeholderImage];
|
|
}else{
|
|
self.thumImageView.hidden = YES;
|
|
}
|
|
}
|
|
|
|
- (void)resetSizeWithURLImage:(UMComImageView *)imageView
|
|
{
|
|
self.thumImageView.hidden = YES;
|
|
UIScrollView * zoomView = (UIScrollView *)self.superview;
|
|
if ([self.superview isKindOfClass:[UIScrollView class]] && zoomView.zoomScale > 1) {
|
|
// zoomView.zoomScale = 1;
|
|
}else{
|
|
imageView.contentMode = UIViewContentModeScaleAspectFit;
|
|
CGSize viewSize = [UIScreen mainScreen].bounds.size;
|
|
CGSize imageSize = imageView.image.size;
|
|
int height = viewSize.width * imageSize.height / imageSize.width;
|
|
// imageView.frame = CGRectMake(0,viewSize.height/2-height/2, viewSize.width, height);
|
|
imageView.frame = CGRectMake(0, 0, zoomView.bounds.size.width, zoomView.bounds.size.height);
|
|
|
|
}
|
|
|
|
// NSLog(@"imageView center is :%@",NSStringFromCGPoint(imageView.center));
|
|
|
|
}
|
|
|
|
|
|
@end
|