This repository has been archived by the owner on Sep 18, 2021. It is now read-only.
/
ExampleTableViewCell.m
81 lines (64 loc) · 2.42 KB
/
ExampleTableViewCell.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
/*
Copyright 2011 Twitter, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License.
You may obtain a copy of the License in the LICENSE file, or at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#import "ExampleTableViewCell.h"
@implementation ExampleTableViewCell
- (id)initWithStyle:(TUITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
textRenderer = [[TUITextRenderer alloc] init];
/*
Add the text renderer to the view so events get routed to it properly.
Text selection, dictionary popup, etc should just work.
You can add more than one.
The text renderer encapsulates an attributed string and a frame.
The attributed string in this case is set by setAttributedString:
which is configured by the table view delegate. The frame needs to be
set before it can be drawn, we do that in drawRect: below.
*/
self.textRenderers = [NSArray arrayWithObjects:textRenderer, nil];
}
return self;
}
- (NSAttributedString *)attributedString
{
return textRenderer.attributedString;
}
- (void)setAttributedString:(NSAttributedString *)attributedString
{
textRenderer.attributedString = attributedString;
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect
{
CGRect b = self.bounds;
CGContextRef ctx = TUIGraphicsGetCurrentContext();
if(self.selected) {
// selected background
CGContextSetRGBFillColor(ctx, .87, .87, .87, 1);
CGContextFillRect(ctx, b);
} else {
// light gray background
CGContextSetRGBFillColor(ctx, .97, .97, .97, 1);
CGContextFillRect(ctx, b);
// emboss
CGContextSetRGBFillColor(ctx, 1, 1, 1, 0.9); // light at the top
CGContextFillRect(ctx, CGRectMake(0, b.size.height-1, b.size.width, 1));
CGContextSetRGBFillColor(ctx, 0, 0, 0, 0.08); // dark at the bottom
CGContextFillRect(ctx, CGRectMake(0, 0, b.size.width, 1));
}
// text
CGRect textRect = CGRectOffset(b, 15, -15);
textRenderer.frame = textRect; // set the frame so it knows where to draw itself
[textRenderer draw];
}
@end