autolayout ios-autolayout ios11 autoresizingmask xcode9

autolayout - Autoresizing no funciona en iOS11/XCode 9



ios-autolayout autoresizingmask (2)

Estoy trabajando en este mismo tema hoy: una cosa que ha funcionado en algunos casos es el intercambio de valores de máscara similares (pero no idénticos). Por ejemplo, una de nuestras vistas no funcionaba con UIViewAutoresizingFlexibleHeight pero funciona con UIViewAutoresizingFlexibleBottomMargin.

No conozco una forma automática de actualizar a AutoLayout: de hecho, uso AutoLayout mucho en otros proyectos, y la base conceptual es bastante diferente ...

Editaré esta respuesta si encuentro algo mejor.

Parece que la Autoresizing de vistas ya no funciona confiablemente cuando se compila para iOS11 con XCode 9.

El diseño de varias vistas termina con el posicionamiento de los controles tal como están en el XIB, pero el cambio de tamaño apropiado no ha sucedido. Esto ha funcionado bien en iOS10 y funciona con nuestra aplicación anterior que se ejecuta en iOS11. Sin embargo, la reconstrucción de la aplicación falla el posicionamiento y el tamaño.

¿Ha cambiado algo que afecta el uso de la autoresizingmask de autoresizingmask ?

¿Hay alguna manera de convertir automáticamente de AutoResizing a AutoResizing AutoLayout and Constraints ?

Editar: Los controles que UINavigationBar problemas son UINavigationBar y UIToolBar .


El mismo problema aquí. Como lo menciona @John Nimis jugando con máscaras alguna vez parece resolver el problema. Por ejemplo, cuando teníamos las máscaras superior e inferior (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin) conseguimos eliminar la de arriba.

EDITAR No sé si esta es una solución definitiva, pero noté que en todas partes el problema tenía un origen fijo (x o y) en el marco. Por ejemplo:

view.frame = (view1.frame.origin.x, 150, width, height);

Cambiar el valor fijo en un valor relativo (por ejemplo, respecto de otra vista1) resolvió el problema con las máscaras:

view.frame = (view1.frame.origin.x, view1.frame.origin.y + view1.frame.size.height + 20, width, height);