Tiene que anular layoutSubviews
y hacer algo como lo siguiente. Y no olvide configurar el nivel de sangría en algo mayor que 0 :) Para las celdas personalizadas, el nivel de sangría no se aplica de manera predeterminada.
Para evitar la sangría de un solo golpe para eliminar el gesto, tendrá que hacer un pero más trabajo. Hay un estado que refleja el estado de edición de la celda. No es público, pero se puede acceder con - (void)willTransitionToState:(UITableViewCellStateMask)aState
, por lo que almacenarlo en una propiedad hace el trabajo para layoutViews.
documentación de Apple para willTransitionToState:
Tenga en cuenta que cuando el usuario pasa de una célula suprimirlo, las transiciones celulares para el estado identificado por el UITableViewCellStateShowingDeleteConfirmationMask constante pero el UITableViewCellStateShowingEditControlMask es no establecido.
archivo de cabecera
int state;
...
@property (nonatomic) int state;
...
implantación de células
@synthesize state;
...
- (void)layoutSubviews
{
[super layoutSubviews];
self.contentView.frame = CGRectMake(0,
self.contentView.frame.origin.y,
self.contentView.frame.size.width,
self.contentView.frame.size.height);
if (self.editing
&& ((state & UITableViewCellStateShowingEditControlMask)
&& !(state & UITableViewCellStateShowingDeleteConfirmationMask)) ||
((state & UITableViewCellStateShowingEditControlMask)
&& (state & UITableViewCellStateShowingDeleteConfirmationMask)))
{
float indentPoints = self.indentationLevel * self.indentationWidth;
self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width - indentPoints,
self.contentView.frame.size.height);
}
}
- (void)willTransitionToState:(UITableViewCellStateMask)aState
{
[super willTransitionToState:aState];
self.state = aState;
}
¿Encontró alguna solución? Estoy sufriendo el mismo problema. Gracias. – harshitgupta