widgets tiempo poner pantalla news como clima bateria aparece ios autolayout today-extension

tiempo - widgets ios 11



Inconsistente hoy El comportamiento de los widgets rompe las restricciones de altura de la subvista (1)

Intenta evitar el uso de alfileres.

Para el posicionamiento, confíe en alinear su vista con los bordes superior, posterior, superior o inferior de la supervista.

Para dimensionar, intente configurar su vista para que tenga la misma altura o ancho con la supervista. Y ajustando el multiplicador según sea necesario.

Esto solucionó inconsistencias de diseño automático que estaba experimentando en un widget de hoy.

Actualizado w / captura de pantalla:

Ver arriba, estoy usando el menú de alineación ( no el menú de pin). Selecciono tanto la vista que estoy tratando de restringir, junto con la supervista que lo recubre todo, y le digo al anterior que comparta (o, se alinee con) los bordes posteriores e inferiores.

Sé que esto no es cómo Apple puede demostrarlo, sin embargo, es una solución que evita los errores que se producen al utilizar los pines con Today Widgets.

Actualización n. ° 2: Y aquí están todas las restricciones (incluida la altura y el ancho):

El error debe estar relacionado con el tamaño inferido de una vista que está completamente anclado, porque cuando establezco que el alto y el ancho de mi vista son relativos a su supervista (en lugar de hacer que se infiera), el error no ocurre.

Esta pregunta está relacionada con otra pregunta que acabo de publicar en Stackoverflow:
Conflictos de restricción de diseño en Widget predeterminado de hoy

Agregué una extensión de hoy como destino a mi aplicación, UIView etiqueta predeterminada "Hola mundo" que está dentro de la vista raíz del widget y agregué una UIView simple en su lugar. Le di a la vista un color amarillo y la fijé en todos los bordes de la vista raíz, de la misma manera que la etiqueta estaba restringida. Luego agregué otra restricción a la vista amarilla para darle una altura fija de 100 px.

Cuando lance la aplicación (probada en el simulador y el dispositivo), esa restricción de altura simplemente se ignora y la vista amarilla ocupa todo el espacio disponible hasta el encabezado del siguiente widget.

Cuando deslizo hacia arriba el centro de notificaciones y lo vuelvo a bajar, la vista de repente salta (parece que de repente está "viendo" su propia restricción de altura), dejando un espacio en blanco vertical de 39 píxeles en la parte inferior del widget:

Me imaginé que el margen de 39 píxeles en la parte inferior es el margen inferior predeterminado de un widget de hoy según lo pasado por el parámetro defaultMarginInsets en el widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) y que puedo corregir este comportamiento incoherente anulando este método y proporcionando mi propio insertos de margen:

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets { var newInsets = defaultMarginInsets newInsets.bottom = 20 return newInsets }

Sin embargo, preferiría usar los márgenes proporcionados por el sistema en lugar de los valores fijos. Me parece que este es otro error de iOS con respecto al widget de hoy. ¿Lo es? Y si no: ¿cómo puedo solucionar esto?