Restricciones para mantener dos vistas de ancho variable juntas en el centro de la vista de supervisión.

Tengo dos vistas una al lado de la otra horizontalmente en una vista de contenedor. Están separados 8 puntos, pero tienen anchos variables. Quiero mantener el centro de las dos vistas igual al centro de la vista del contenedor, de modo que sin importar el tamaño del contenedor, las dos vistas juntas están en el centro de la pantalla.

Mi idea para lograr esto es crear dos restricciones horizontales, una desde el borde izquierdo del contenedor hasta el borde izquierdo del primer object y el borde derecho del segundo object hasta el borde derecho del contenedor. Luego haría que estas dos restricciones sean iguales entre sí, pero variable con el tamaño del contenedor. Desafortunadamente, no puedo encontrar una manera de hacer esto. Solo puedo descubrir cómo hacer que las restricciones sean iguales o mayores / menores que un valor particular. ¿Hay alguna forma de hacer esto?

Debería poder hacer esto en IB.

Cree una vista vacía con ancho 1 y establezca una restricción horizontal para ubicarla en el centro de su contenedor. Este es un marcador de position.

Establezca restricciones en sus dos vistas relativas a esta vista del marcador de position del centro:

La vista izquierda debe tener una restricción final al borde superior del marcador de position.

La vista derecha debería tener restricciones principales para el borde posterior del marcador de position.

Ajuste las constantes para estas dos restricciones para lograr el espacio que desee entre las vistas izquierda y derecha.

Pensando extemporáneamente, intentaste darle a la vista izquierda una restricción principal para su supervisión, dando la vista correcta una restricción de final y luego dando a los dos una restricción de espaciado horizontal y una restricción de ancho igual?

Si quieres algo como esto:

[ <- equal -> <- equal -> ] [ [view1] [biggerview2] ]-- resizable superview, fixed-width views 

con 8 píxeles entre las vistas, entonces:

 view1.trailing = superview.centerX - 4 biggerview2.leading = superview.centerX + 4 

y otras restricciones obvias como:

 view1.leading >= default view1.width > 0 superview.trailing >= biggerview2.trailing + default biggerview2.width > 0 ... 

Simplemente incrusta tus dos vistas en una vista de contenedor. Establezca las restricciones para que el contenedor abra de cerca las dos vistas. Luego, centre la vista del contenedor en su vista supervisa.

Sí, hay una forma: tiene supervisión y 2 subvenciones (que desea hacer 50:50 para el ancho de la supervisión): necesita conectar la restricción de ancho (ancho igual) desde subvista a supervisión, y cambiar el multiplicador de esta restricción de 1 a 0.5 (también puede usar la syntax 1: 2 (o 1: 3 para 3 subvistas)). También puede establecer un valor constante para configurar el relleno:

Aquí hay un ejemplo:

las subvistas tienen un ancho proporcional de 2: 1 a la supervisión y 32 son constantes para el relleno (16 de cada lado)

Así que calculó como (para la pantalla del iPhone 4S) (ancho 320 – 32 constante) / 2 = ancho de la subvista

introduzca la descripción de la imagen aquí

También puede hacer lo mismo con 3, 4, 5 subvenciones para hacer vistas más complejas. Aquí hay un enlace con mi otro ejemplo: https://dl.dropboxusercontent.com/u/48223929/AutolayoutExampleView.xib