-
Notifications
You must be signed in to change notification settings - Fork 140
/
EGOPhotoCaptionView.m
89 lines (69 loc) · 2.5 KB
/
EGOPhotoCaptionView.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//
// EGOPhotoCaptionView.m
// EGOPhotoViewer
//
// Created by Devin Doty on 1/16/10January16.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "EGOPhotoCaptionView.h"
@implementation EGOPhotoCaptionView
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
self.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.3f];
self.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_textLabel = [[UILabel alloc] initWithFrame:CGRectMake(20.0f, 0.0f, self.frame.size.width - 40.0f, 40.0f)];
_textLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
_textLabel.backgroundColor = [UIColor clearColor];
_textLabel.textAlignment = UITextAlignmentCenter;
_textLabel.textColor = [UIColor whiteColor];
_textLabel.shadowColor = [UIColor blackColor];
_textLabel.shadowOffset = CGSizeMake(0.0f, 1.0f);
[self addSubview:_textLabel];
[_textLabel release];
}
return self;
}
- (void)layoutSubviews{
[self setNeedsDisplay];
_textLabel.frame = CGRectMake(20.0f, 0.0f, self.frame.size.width - 40.0f, 40.0f);
}
- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor colorWithWhite:1.0f alpha:0.8f] setStroke];
CGContextMoveToPoint(ctx, 0.0f, 0.0f);
CGContextAddLineToPoint(ctx, self.frame.size.width, 0.0f);
CGContextStrokePath(ctx);
}
- (void)setCaptionText:(NSString*)text{
if (text == nil) {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.1f];
self.alpha = 0.0f;
[UIView commitAnimations];
_textLabel.text = nil;
return;
}
self.alpha = 1.0f;
_textLabel.text = text;
}
- (void)setCaptionHidden:(BOOL)hidden{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2f];
if (hidden) {
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
self.frame = CGRectMake(0.0f, self.superview.frame.size.height, self.frame.size.width, self.frame.size.height);
self.alpha = 0.0f;
} else {
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
CGFloat toolbarSize = UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) ? 32.0f : 44.0f;
self.frame = CGRectMake(0.0f, self.superview.frame.size.height - (toolbarSize + self.frame.size.height), self.frame.size.width, self.frame.size.height);
if (_textLabel.text != nil) {
self.alpha = 1.0f;
}
}
[UIView commitAnimations];
}
- (void)dealloc {
[super dealloc];
}
@end