forked from capttaco/Briefs
/
BFProgressBar.m
75 lines (61 loc) · 2.57 KB
/
BFProgressBar.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//
// BFProgressBar.m
// Briefs
//
// Created by Rob Rhyne on 4/5/10.
// Copyright Digital Arch Design, 2009-2010. See LICENSE file for details.
//
#import "BFProgressBar.h"
@implementation BFProgressBar
// setup default implementation from a .nib file
- (void)awakeFromNib
{
// size the slider
CGRect sliderFrame = self.frame;
sliderFrame.origin = CGPointMake(6.0f, -3.0f);
sliderFrame.size = CGSizeMake(sliderFrame.size.width-12.0f, 8.0f);
internalSlider = [[UISlider alloc] initWithFrame:sliderFrame];
// style the slider
internalSlider.backgroundColor = [UIColor clearColor];
UIImage *stetchLeftTrack = [[UIImage imageNamed:@"pop-slider-fg.png"]
stretchableImageWithLeftCapWidth:1 topCapHeight:0];
UIImage *stetchRightTrack = [[UIImage imageNamed:@"pop-slider-blank.png"]
stretchableImageWithLeftCapWidth:1 topCapHeight:0];
[internalSlider setThumbImage:nil forState:UIControlStateNormal];
[internalSlider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
[internalSlider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];
// size the background
UIImage *stretchableBG = [[UIImage imageNamed:@"pop-slider-bg.png"] stretchableImageWithLeftCapWidth:8 topCapHeight:0];
background = [[UIImageView alloc] initWithImage:stretchableBG];
background.frame = CGRectMake(0.0f, 0.0f, self.frame.size.width, self.frame.size.height);
// add them to the parent view
[self addSubview:background];
[self addSubview:internalSlider];
}
- (id)initWithMarkerImageRef:(NSString *)imageRef usingBackground:(NSString *)backgroundRef
{
// TODO: load the slider with custom images.
return nil;
}
- (void)setProgressValue:(float)value animated:(BOOL)shouldAnimate
{
if (internalSlider) {
[internalSlider setValue:value animated:shouldAnimate];
}
// if the value to be set is near 1.0
// then swap the background a completed image
if (value > 0.98) {
CGRect bgFrame = background.frame;
[background removeFromSuperview];
[background release];
UIImage *stretchableBG = [[UIImage imageNamed:@"pop-slider-bg-filled.png"] stretchableImageWithLeftCapWidth:8.0 topCapHeight:0.0];
background = [[UIImageView alloc] initWithImage:stretchableBG];
background.frame = bgFrame;
[self insertSubview:background belowSubview:internalSlider];
}
}
- (void)setProgressValue:(float)value
{
[self setProgressValue:value animated:NO];
}
@end