¿Cómo agregar un separador personalizado a UITableViewCell?
Por favor consérvelo en algún momento ya que esta es una explicación larga.
tengo unUIViewController
que consiste en unUIButton
y unUITableView
que carga diferentes tipos deUITableViewCell
s con identificadorCell1
yCell2
en eventotouchUpInside
del botón. Estoy usando el guión gráfico.
El separador para ambas celdas es personalizado.
Cell1
tiene un separador que ocupa todo el ancho de la celda y la altura de 1 píxel en la parte inferior de la celda.
MientrasCell2
tiene un separador que tiene un desplazamiento de 5 píxeles desde la celda, tanto a la izquierda como a la derecha.
Cada vez que el botón fuera de latableView
se hace clic en eltableViewCell
Se intercambian s, en función del identificador de celda.
Inicialmente eltableView
ocupa el ancho completo deviewController
y consiste en Cell1, pero se pulsa el botón,tableViewCell
s se cambian a Cell2 y el marco de latableView
se cambia, el ancho se reduce en 10 y el origen x se incrementa en 5.
Pero cuando esto sucede, el separador deCell2
está a 5 píxeles de la celda a la derecha pero a la izquierda está alejada por 5 píxeles. Esto sucede para todosCell2
que se carga con datos, y las celdas que no tienen datos, el marco se cambia de manera apropiada.
Pero la celda después de eso tiene el ancho deCell1
(ancho mayor)
-(void)setSeperatorStyleForTableView :(UITableViewCell *)cell //this is called in cellForRowAtIndex
{
//cell- type of cell(Cell1 or Cell2)
CGRect seperatorFrame;
UIImageView *seperatorImage;
seperatorFrame = [self setSeperatorFrame:cell];
if(firstCellToBeLoaded)//BOOL used to change the button text and load appropriate cells
{
seperatorImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"table_row
2.png"]];
}
else
{
seperatorImage = [[UIImageView alloc] initWithImage:[UIImage
imageNamed:@"table_row.png"]];
}
seperatorImage.frame = seperatorFrame;
seperatorImage.autoresizingMask = YES;
[cell.contentView addSubview:seperatorImage];
}
//set the customized separator frame
-(CGRect)setSeperatorFrame :(UITableViewCell *)cell
{
CGRect seperatorFrame;
seperatorFrame.size.height = 1.0;
seperatorFrame.origin.y = cell.frame.origin.y + (cell.frame.size.height - 1.0);
if(firstCellToBeLoaded)
{
seperatorFrame.origin.x = cell.frame.origin.x ;
seperatorFrame.size.width = cell.frame.size.width;
}
else
{
seperatorFrame.origin.x = cell.frame.origin.x + 5.0;
seperatorFrame.size.width = cell.frame.size.width -10.0;
}
return seperatorFrame;
}