root / Classes / RSTextFieldCell.m @ 64929bae
History | View | Annotate | Download (5 kB)
1 | 700184fb | Miltiadis Vasilakis | // |
---|---|---|---|
2 | 700184fb | Miltiadis Vasilakis | // RSTextFieldCell.m |
3 | 700184fb | Miltiadis Vasilakis | // RSCustomViews |
4 | 700184fb | Miltiadis Vasilakis | // |
5 | 700184fb | Miltiadis Vasilakis | // Created by Mike Mayo on 1/19/11. |
6 | 700184fb | Miltiadis Vasilakis | // Copyright 2011 __MyCompanyName__. All rights reserved. |
7 | 700184fb | Miltiadis Vasilakis | // |
8 | 700184fb | Miltiadis Vasilakis | |
9 | 700184fb | Miltiadis Vasilakis | #import "RSTextFieldCell.h" |
10 | 45f2fce6 | Miltiadis Vasilakis | #import "UIColor+MoreColors.h" |
11 | 700184fb | Miltiadis Vasilakis | |
12 | 700184fb | Miltiadis Vasilakis | |
13 | 700184fb | Miltiadis Vasilakis | @implementation RSTextFieldCell |
14 | 700184fb | Miltiadis Vasilakis | |
15 | 45f2fce6 | Miltiadis Vasilakis | @synthesize textField, modalPresentationStyle, fixedTextLabel; |
16 | 700184fb | Miltiadis Vasilakis | |
17 | 700184fb | Miltiadis Vasilakis | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { |
18 | 700184fb | Miltiadis Vasilakis | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; |
19 | 700184fb | Miltiadis Vasilakis | if (self) { |
20 | 45f2fce6 | Miltiadis Vasilakis | [self initializeSubviews:style withFixedTextLabel:nil]; |
21 | 700184fb | Miltiadis Vasilakis | } |
22 | 700184fb | Miltiadis Vasilakis | return self; |
23 | 700184fb | Miltiadis Vasilakis | } |
24 | 700184fb | Miltiadis Vasilakis | |
25 | 45f2fce6 | Miltiadis Vasilakis | - (id)initCellWithFixedLabel:(NSString *)fixedLabelText withStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { |
26 | 45f2fce6 | Miltiadis Vasilakis | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; |
27 | 45f2fce6 | Miltiadis Vasilakis | if (self) { |
28 | 45f2fce6 | Miltiadis Vasilakis | [self initializeSubviews:style withFixedTextLabel:fixedLabelText]; |
29 | 45f2fce6 | Miltiadis Vasilakis | } |
30 | 45f2fce6 | Miltiadis Vasilakis | return self; |
31 | 45f2fce6 | Miltiadis Vasilakis | } |
32 | 45f2fce6 | Miltiadis Vasilakis | |
33 | 45f2fce6 | Miltiadis Vasilakis | - (void)initializeSubviews:(UITableViewCellStyle)style withFixedTextLabel:(NSString *)fixedLabelText { |
34 | 45f2fce6 | Miltiadis Vasilakis | self.selectionStyle = UITableViewCellSelectionStyleNone; |
35 | 45f2fce6 | Miltiadis Vasilakis | |
36 | 45f2fce6 | Miltiadis Vasilakis | textField = [[UITextField alloc] initWithFrame:self.detailTextLabel.frame]; |
37 | 45f2fce6 | Miltiadis Vasilakis | textField.textAlignment = self.detailTextLabel.textAlignment; |
38 | 45f2fce6 | Miltiadis Vasilakis | textField.returnKeyType = UIReturnKeyDone; |
39 | 45f2fce6 | Miltiadis Vasilakis | textField.backgroundColor = [UIColor clearColor]; |
40 | 45f2fce6 | Miltiadis Vasilakis | textField.adjustsFontSizeToFitWidth = NO; |
41 | 45f2fce6 | Miltiadis Vasilakis | textField.autocorrectionType = UITextAutocorrectionTypeNo; |
42 | 45f2fce6 | Miltiadis Vasilakis | textField.autocapitalizationType = UITextAutocapitalizationTypeNone; |
43 | 45f2fce6 | Miltiadis Vasilakis | |
44 | 45f2fce6 | Miltiadis Vasilakis | if (style == UITableViewCellStyleValue1) { |
45 | 45f2fce6 | Miltiadis Vasilakis | textField.font = [UIFont systemFontOfSize:17.0]; |
46 | 45f2fce6 | Miltiadis Vasilakis | } else if (style == UITableViewCellStyleValue2) { |
47 | 45f2fce6 | Miltiadis Vasilakis | textField.font = [UIFont boldSystemFontOfSize:15.0]; |
48 | 45f2fce6 | Miltiadis Vasilakis | } |
49 | 53301c16 | Miltiadis Vasilakis | |
50 | 53301c16 | Miltiadis Vasilakis | if (self.detailTextLabel) { |
51 | 53301c16 | Miltiadis Vasilakis | textField.textColor = self.detailTextLabel.textColor; |
52 | 53301c16 | Miltiadis Vasilakis | } |
53 | 45f2fce6 | Miltiadis Vasilakis | [self addSubview:textField]; |
54 | 45f2fce6 | Miltiadis Vasilakis | |
55 | 45f2fce6 | Miltiadis Vasilakis | self.detailTextLabel.textColor = [UIColor clearColor]; |
56 | 45f2fce6 | Miltiadis Vasilakis | self.detailTextLabel.backgroundColor = [UIColor clearColor]; |
57 | 45f2fce6 | Miltiadis Vasilakis | self.detailTextLabel.highlightedTextColor = [UIColor clearColor]; |
58 | 45f2fce6 | Miltiadis Vasilakis | self.detailTextLabel.text = @"Using a very long string here to make sure that the UILabel is rendered at the maximum width so we can copy it for the UITextField."; |
59 | 45f2fce6 | Miltiadis Vasilakis | |
60 | 45f2fce6 | Miltiadis Vasilakis | if (fixedLabelText) { |
61 | 45f2fce6 | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
62 | 45f2fce6 | Miltiadis Vasilakis | fixedTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(21.0, 14.5, 458.0, 18.0)]; |
63 | 45f2fce6 | Miltiadis Vasilakis | } else { |
64 | 45f2fce6 | Miltiadis Vasilakis | fixedTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(21.0, 14.5, 280.0, 18.0)]; |
65 | 45f2fce6 | Miltiadis Vasilakis | } |
66 | 45f2fce6 | Miltiadis Vasilakis | fixedTextLabel.font = [UIFont systemFontOfSize:17.0]; |
67 | 45f2fce6 | Miltiadis Vasilakis | fixedTextLabel.textColor = [UIColor value1DetailTextLabelColor]; |
68 | 45f2fce6 | Miltiadis Vasilakis | fixedTextLabel.backgroundColor = [UIColor clearColor]; |
69 | 45f2fce6 | Miltiadis Vasilakis | fixedTextLabel.textAlignment = UITextAlignmentRight; |
70 | 45f2fce6 | Miltiadis Vasilakis | fixedTextLabel.text = fixedLabelText; |
71 | 45f2fce6 | Miltiadis Vasilakis | [self addSubview:fixedTextLabel]; |
72 | 45f2fce6 | Miltiadis Vasilakis | } |
73 | 45f2fce6 | Miltiadis Vasilakis | } |
74 | 45f2fce6 | Miltiadis Vasilakis | |
75 | 45f2fce6 | Miltiadis Vasilakis | |
76 | 700184fb | Miltiadis Vasilakis | - (void)drawRect:(CGRect)rect { |
77 | 700184fb | Miltiadis Vasilakis | [super drawRect:rect]; |
78 | 700184fb | Miltiadis Vasilakis | |
79 | 700184fb | Miltiadis Vasilakis | CGRect aRect = self.detailTextLabel.frame; |
80 | 700184fb | Miltiadis Vasilakis | |
81 | 700184fb | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
82 | 700184fb | Miltiadis Vasilakis | if (modalPresentationStyle == UIModalPresentationFormSheet) { |
83 | 45f2fce6 | Miltiadis Vasilakis | textField.frame = CGRectMake(aRect.origin.x + 31.0, aRect.origin.y + 1.0, aRect.size.width - 24, aRect.size.height); |
84 | 700184fb | Miltiadis Vasilakis | } else { |
85 | 45f2fce6 | Miltiadis Vasilakis | textField.frame = CGRectMake(aRect.origin.x + 35.0, aRect.origin.y + 1.0, aRect.size.width - 24, aRect.size.height); |
86 | 700184fb | Miltiadis Vasilakis | } |
87 | 700184fb | Miltiadis Vasilakis | } else { |
88 | 700184fb | Miltiadis Vasilakis | textField.frame = CGRectMake(aRect.origin.x + 10.0, aRect.origin.y + 1.0, aRect.size.width, aRect.size.height); |
89 | 700184fb | Miltiadis Vasilakis | } |
90 | 700184fb | Miltiadis Vasilakis | |
91 | 45f2fce6 | Miltiadis Vasilakis | if (fixedTextLabel) { |
92 | 45f2fce6 | Miltiadis Vasilakis | int xOffset; |
93 | 45f2fce6 | Miltiadis Vasilakis | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) |
94 | 45f2fce6 | Miltiadis Vasilakis | xOffset = 5; |
95 | 45f2fce6 | Miltiadis Vasilakis | else |
96 | 45f2fce6 | Miltiadis Vasilakis | xOffset = 3; |
97 | 45f2fce6 | Miltiadis Vasilakis | CGSize fixedLabelTextSize = [fixedTextLabel.text sizeWithFont:fixedTextLabel.font constrainedToSize:CGSizeMake(280.0, 900.0f)]; |
98 | 45f2fce6 | Miltiadis Vasilakis | textField.frame = CGRectMake(textField.frame.origin.x, |
99 | 45f2fce6 | Miltiadis Vasilakis | textField.frame.origin.y, |
100 | 45f2fce6 | Miltiadis Vasilakis | textField.frame.size.width - fixedLabelTextSize.width + xOffset, |
101 | 45f2fce6 | Miltiadis Vasilakis | textField.frame.size.height); |
102 | 45f2fce6 | Miltiadis Vasilakis | } |
103 | 45f2fce6 | Miltiadis Vasilakis | |
104 | 700184fb | Miltiadis Vasilakis | // this isn't generic. this is for text decoration on the end of the textField |
105 | 700184fb | Miltiadis Vasilakis | if (self.accessoryView) { |
106 | 700184fb | Miltiadis Vasilakis | aRect = textField.frame; |
107 | 700184fb | Miltiadis Vasilakis | aRect.origin.x += 9.0; |
108 | 700184fb | Miltiadis Vasilakis | textField.frame = aRect; |
109 | 700184fb | Miltiadis Vasilakis | } |
110 | 700184fb | Miltiadis Vasilakis | |
111 | 700184fb | Miltiadis Vasilakis | textField.contentStretch = self.detailTextLabel.contentStretch; |
112 | 700184fb | Miltiadis Vasilakis | textField.backgroundColor = [UIColor clearColor]; |
113 | 700184fb | Miltiadis Vasilakis | textField.transform = self.detailTextLabel.transform; |
114 | 700184fb | Miltiadis Vasilakis | textField.clipsToBounds = self.detailTextLabel.clipsToBounds; |
115 | 700184fb | Miltiadis Vasilakis | textField.clearsContextBeforeDrawing = self.detailTextLabel.clearsContextBeforeDrawing; |
116 | 700184fb | Miltiadis Vasilakis | textField.contentMode = self.detailTextLabel.contentMode; |
117 | 700184fb | Miltiadis Vasilakis | textField.autoresizingMask = self.detailTextLabel.autoresizingMask; |
118 | 700184fb | Miltiadis Vasilakis | textField.autoresizesSubviews = YES; |
119 | 700184fb | Miltiadis Vasilakis | textField.font = self.detailTextLabel.font; |
120 | 700184fb | Miltiadis Vasilakis | } |
121 | 700184fb | Miltiadis Vasilakis | |
122 | 700184fb | Miltiadis Vasilakis | - (void)dealloc { |
123 | 700184fb | Miltiadis Vasilakis | [textField release]; |
124 | 45f2fce6 | Miltiadis Vasilakis | [fixedTextLabel release]; |
125 | 700184fb | Miltiadis Vasilakis | [super dealloc]; |
126 | 700184fb | Miltiadis Vasilakis | } |
127 | 700184fb | Miltiadis Vasilakis | |
128 | 700184fb | Miltiadis Vasilakis | @end |