tutorial sketch que español ios autolayout ios-autolayout

ios - sketch - Cómo obtener UIView de tamaño real con autolayout



swift auto layout programmatically (8)

Antes de "obtener el código de tamaño real", inserte el siguiente código:

[view setNeedsLayout]; [view layoutIfNeeded];

Soy un nuevo desarrollador de iOS.

Yo uso el diseño automático.

Tengo un problema. No puedo obtener el tamaño real de UIView después de restricciones.

Ejemplo, cuando quiero obtener el tamaño de UIView con restricción

self.container.frame.size.height

Siempre devolverá 550 para todo el tamaño del dispositivo. Pero puedo ver que tiene un tamaño de diferencia cuando lo ejecuto en un dispositivo de diferencia.

Gracias


Dado que todo el mundo asume que el acceso se realiza a través de UIViewController y no dentro de una subclase UIView , las respuestas no son realmente útiles. La forma correcta de obtener el tamaño correcto de una subclase UIView es en layoutSubviews .


El mejor momento es durante viewDidLayoutSubviews porque sucede antes de viewDidAppear por lo que aún puede hacer algunas modificaciones antes de que se muestre la vista.


Esto es impresionante

Si desea obtener el marco sin utilizar el método de subvisiones de diseño durante el uso de reproducción automática, use este:

dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"View frame: %@", NSStringFromCGRect(view.frame)); })


La solución más sencilla es ejecutar ese código en -viewDidAppear: (después de que se haya ejecutado el autolayout).




[ver layoutIfNeed] sálvame.

Utilice este método para forzar el diseño de subvistas antes de dibujar. Usando la vista que recibe el mensaje como la vista raíz, este método establece el subárbol de vista comenzando en la raíz.

Después de invocar este método, puedo obtener el tamaño real de la vista personalizada en xib. Muchas gracias a @Allen y al autor.