Retire el relleno / margen de UILabel mientras usa el layout automático.

Tengo una UITableView que usa layout automático. Tengo varios types de celdas, pero por ahora usemos el más simple de todos, uno que solo tiene una UILabel.

En tableView:heightForRowAtIndexPath: tengo el siguiente código:

  [self configureCell:self.detailsCell forRowAtIndexPath:indexPath]; [self.detailsCell layoutIfNeeded]; CGSize size = [self.detailsCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; return size.height + 1; 

que a su vez llama

 - (void)configureCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // ... cell.detailsLabel.text = self.data.myText; cell.detailsLabel.font = [UIFont prefernetworkingFontForTextStyle:UIFontTextStyleBody]; // [cell.detailsLabel sizeToFit]; <- I tried this, but didn't help } 

Capturador de interfaz de pantalla

y termino obteniendo esto:

Celda real

El rectángulo verde es la celda real. El rectángulo morado es el UILabel. No quiero el relleno / margen púrpura superior e inferior. ¿Cómo puedo deshacerme de él?

tienes que tener cuidado con " Restringir a los márgenes: "

compara estas dos imágenes: Restringir a márgenes = SÍ y Restringir a marings = NO

por lo que no seleccionar "construye a los márgenes" mientras se agregan nuevas restricciones, debe resolver el problema de relleno / margen 🙂

Si lo desea, puede visualizar estos márgenes con "Editor / Lienzo / Mostrar rectangularjs de layout" La vista sin los rectangularjs de layout: Mostrar rectángulos de diseño = NO y los rectangularjs de layout configurados para mostrar (lo que ilustra su problema bastante bien) Mostrar rectángulos de diseño = SÍ

Puede agregar centro horizontal a UILabel. Luego, establezca "Mayor o igual" a la relación de "espacio superior a supervise", y establezca el espacio inferior de la misma manera. Cree y ejecute, y puede ver que la altura dinámica de UILabel está de acuerdo con el contenido de UILabel.

Los márgenes se deben a las restricciones de autoajuste que ha configurado. Establezca todos los márgenes en cero en el inspector de tamaño.

En caso de que esté utilizando Xcode 6 y admita iOS 8, las restricciones podrían establecerse en 'margen de contenedor' en lugar de 'contenedor'. Es ligeramente diferente y establecer un margen para el contenedor a cero funcionará para usted. Puede cambiar entre ellos cuando configure las restricciones en el guión gráfico presionando 'Alt'.