Podría ser la respuesta tan simple como llamar primero [super layoutSubviews]
dentro de su método de subclase UITableViewCell
layoutSubviews
?
Aquí está mi código.
Primero crear el UITextField
y añadirlo a la contentView
en el initWithStyle:
método:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
inputField = [[UITextField alloc] initWithFrame:CGRectZero];
[self.contentView addSubview:inputField];
inputField.borderStyle = UITextBorderStyleLine;
[inputField release];
}
return self;
}
Luego, en layoutSubviews, tengo esto:
-(void)layoutSubviews
{
inputField.frame = CGRectMake(5, 5, 100, 20);
}
Con ese código, el texto campo es 5px desde la izquierda de la pantalla, que es, por supuesto, 5px a la izquierda de la celda de la tabla cuando está en modo agrupado. En otras palabras, FUERA de la celda de la vista de tabla. No es bueno.
Use este código y el inputField
se coloca 5px a la derecha de la celda, como yo quiero que sea:
-(void)layoutSubviews
{
[super layoutSubviews]; // the magic line
inputField.frame = CGRectMake(5, 5, 100, 20);
}
pude haber entendido mal totalmente el problema que estaba teniendo, sin embargo!
Erik
El problema es UITableView en modo agrupado corta partes de las células (los lados, para revelar el fondo y también redondea las esquinas de la parte superior y las células del fondo de una sección). – jbrennan
Sí, ese es el problema. –
Después de algunas pruebas adicionales, tiene razón en que las celdas de la vista de tabla no se pasan en el tamaño correcto en drawRect. Un enfoque alternativo es establecer una vista de fondo personalizada para una UITableViewCell estándar, y hacer todo su dibujo allí. Obtienes una celda del ancho correcto pero tienes que dibujar las esquinas redondeadas superior e inferior correctamente. –