Statistics
| Branch: | Tag: | Revision:

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