-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathELCAssetCell.m
136 lines (112 loc) · 4.46 KB
/
ELCAssetCell.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//
// AssetCell.m
//
// Created by ELC on 2/15/11.
// Copyright 2011 ELC Technologies. All rights reserved.
//
#import "ELCAssetCell.h"
#import "ELCAsset.h"
#import "ELCConsole.h"
#import "ELCOverlayImageView.h"
@interface ELCAssetCell ()
@property (nonatomic, strong) NSArray *rowAssets;
@property (nonatomic, strong) NSMutableArray *imageViewArray;
@property (nonatomic, strong) NSMutableArray *overlayViewArray;
@end
@implementation ELCAssetCell
//Using auto synthesizers
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
if (self) {
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)];
[self addGestureRecognizer:tapRecognizer];
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:4];
self.imageViewArray = mutableArray;
NSMutableArray *overlayArray = [[NSMutableArray alloc] initWithCapacity:4];
self.overlayViewArray = overlayArray;
}
return self;
}
- (void)setAssets:(NSArray *)assets
{
self.rowAssets = assets;
for (UIImageView *view in _imageViewArray) {
[view removeFromSuperview];
}
for (ELCOverlayImageView *view in _overlayViewArray) {
[view removeFromSuperview];
}
//set up a pointer here so we don't keep calling [UIImage imageNamed:] if creating overlays
UIImage *overlayImage = nil;
for (int i = 0; i < [_rowAssets count]; ++i) {
ELCAsset *asset = [_rowAssets objectAtIndex:i];
if (i < [_imageViewArray count]) {
UIImageView *imageView = [_imageViewArray objectAtIndex:i];
imageView.image = [UIImage imageWithCGImage:asset.asset.thumbnail];
} else {
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithCGImage:asset.asset.thumbnail]];
[_imageViewArray addObject:imageView];
}
if (i < [_overlayViewArray count]) {
ELCOverlayImageView *overlayView = [_overlayViewArray objectAtIndex:i];
overlayView.hidden = asset.selected ? NO : YES;
} else {
if (overlayImage == nil) {
overlayImage = [UIImage imageNamed:@"Overlay.png"];
}
ELCOverlayImageView *overlayView = [[ELCOverlayImageView alloc] initWithImage:overlayImage];
[_overlayViewArray addObject:overlayView];
overlayView.hidden = asset.selected ? NO : YES;
}
}
}
- (void)cellTapped:(UITapGestureRecognizer *)tapRecognizer
{
CGPoint point = [tapRecognizer locationInView:self];
int c = (int)self.rowAssets.count;
// int c = 4;
CGFloat totalWidth = c * 75 + (c - 1) * 4;
CGFloat startX = (self.bounds.size.width - totalWidth) / 2;
CGRect frame = CGRectMake(startX, 2, 75, 75);
for (int i = 0; i < [_rowAssets count]; ++i) {
if (CGRectContainsPoint(frame, point)) {
ELCAsset *asset = [_rowAssets objectAtIndex:i];
asset.selected = !asset.selected;
ELCOverlayImageView *overlayView = [_overlayViewArray objectAtIndex:i];
overlayView.hidden = !asset.selected;
if (asset.selected) {
asset.index = [[ELCConsole mainConsole] currIndex];
[overlayView setIndex:asset.index+1];
// NSLog(@"%d",asset.index);
[[ELCConsole mainConsole] addIndex:asset.index];
}
else
{
[[ELCConsole mainConsole] removeIndex:asset.index];
}
break;
}
// frame.origin.x = frame.origin.x + frame.size.width + 4;
frame.origin.x = frame.origin.x + frame.size.width;
}
}
- (void)layoutSubviews
{
int c = (int)self.rowAssets.count;
// int c = 4;
CGFloat totalWidth = c * 75 + (c - 1) * 4;
CGFloat startX = (self.bounds.size.width - totalWidth) / 2;
CGRect frame = CGRectMake(startX, 2, 75, 75);
for (int i = 0; i < [_rowAssets count]; ++i) {
UIImageView *imageView = [_imageViewArray objectAtIndex:i];
[imageView setFrame:frame];
[self addSubview:imageView];
ELCOverlayImageView *overlayView = [_overlayViewArray objectAtIndex:i];
[overlayView setFrame:frame];
[self addSubview:overlayView];
// frame.origin.x = frame.origin.x + frame.size.width + 4;
frame.origin.x = frame.origin.x + frame.size.width;
}
}
@end