working uitableviewcell not ios objective-c uitableview autolayout

ios - uitableviewcell - uitableviewautomaticdimension not working



Cambiar el marco programáticamente con el diseño automático (4)

Deje que sus restricciones de UITableView para la disposición inferior se establezca en 0, haga una IBOutlet . Ahora deja que tu altura de GADBannerView sea ​​40, así que cambia tu outlet.constant = 40; Para obtener más información sobre cómo hacer IBOutlet y cambiar su valor, eche un vistazo a this o a this esperanza, esto ayudará.

Editar: Para aquellos que buscan, por ejemplo, seguir estos sencillos pasos (Debido a que esta es la respuesta aceptada, creo que vale la pena tener un ejemplo. Crédito a @manujmv para este ejemplo)

  1. Cree una restricción de altura para su vista en su interfaz.

  2. A continuación, agregue un objeto IBOutlet en su clase para esta restricción. Por ejemplo:

    @property (débil, no atómica) IBOutlet NSLayoutConstraint * heightConstraint;

Conecte este objeto en su panel de conexión.

  1. Luego, cambie el valor de esta restricción siempre que lo necesite

    self.heightConstraint.constant = 40;

Tengo una UITableView con Autolayout y necesito reducir la altura cuando aparece GADBannerView en la parte inferior de la pantalla.

Lamentablemente con Autolayout es imposible modificar el marco. La solución es eliminar Autolayout y establecer el marco manualmente. Esto es muy peligroso porque todas mis aplicaciones funcionan bien en pantallas de 3.5 ''y 4.0'' y eliminan el diseño automático, lo que provoca una nueva fase de prueba y más esfuerzo.

¿Hay alguna forma de cambiar el marco incluso si el diseño automático está habilitado?


En lugar de tratar de cambiar el marco de la vista, agregue una restricción de altura mediante el diseño automático y reduzca el valor de esta restricción. Haz los pasos a continuación:

  1. crea una constante de altura para tu vista en tu interfaz.
  2. A continuación, agregue un objeto IBOutlet en su clase para esta restricción. por ejemplo,

    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;

    Conecte este objeto en su panel de conexión.

  3. Luego, cambie el valor de esta restricción siempre que lo necesite

    self.heightConstraint.constant = 40;


Puedes encontrar una restricción como esa

extension UIView { var heightConstaint: NSLayoutConstraint? { get { for constraint: NSLayoutConstraint in constraints { if constraint.firstAttribute == .height { if constraint.relation == .equal { return constraint } } } return nil } set{ setNeedsLayout() } } }


Una cosa más, tienes que llamar a [self.view layoutIfNeeded]; método una vez que cambia las restricciones.

Disfruta :)