// // NJKWebViewProgressView.m // // Created by Satoshi Aasanoon 11/16/13. // Copyright (c) 2013 Satoshi Asano. All rights reserved. // #import "NJKWebViewProgressView.h" @implementation NJKWebViewProgressView @dynamic progress; - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self configureViews]; } return self; } - (void)awakeFromNib { [super awakeFromNib]; [self configureViews]; } -(void)configureViews { self.userInteractionEnabled = NO; self.autoresizingMask = UIViewAutoresizingFlexibleWidth; _progressBarView = [[UIView alloc] initWithFrame:self.bounds]; _progressBarView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; UIColor *tintColor = UIColorFromRGB(0x8F918B); if ([UIApplication.sharedApplication.delegate.window respondsToSelector:@selector(setTintColor:)] && UIApplication.sharedApplication.delegate.window.tintColor) { tintColor = UIApplication.sharedApplication.delegate.window.tintColor; } _progressBarView.backgroundColor = tintColor; [self addSubview:_progressBarView]; _barAnimationDuration = 0.27f; _fadeAnimationDuration = 0.27f; _fadeOutDelay = 0.1f; } -(void)setProgress:(float)progress { [self setProgress:progress animated:NO]; } - (void)setProgress:(float)progress animated:(BOOL)animated { BOOL isGrowing = progress > 0.0; [UIView animateWithDuration:(isGrowing && animated) ? _barAnimationDuration : 0.0 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ CGRect frame = _progressBarView.frame; frame.size.width = progress * self.bounds.size.width; _progressBarView.frame = frame; } completion:nil]; if (progress >= 1.0) { [UIView animateWithDuration:animated ? _fadeAnimationDuration : 0.0 delay:_fadeOutDelay options:UIViewAnimationOptionCurveEaseInOut animations:^{ _progressBarView.alpha = 0.0; } completion:^(BOOL completed){ CGRect frame = _progressBarView.frame; frame.size.width = 0; _progressBarView.frame = frame; }]; } else { [UIView animateWithDuration:animated ? _fadeAnimationDuration : 0.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ _progressBarView.alpha = 1.0; } completion:nil]; } } @end