translatesautoresizingmaskintoconstraints español code ios objective-c uiview autolayout

ios - español - Autolayout-Posición por porcentaje



swift auto layout programmatically (2)

No soy un experto en diseño automático (¡ni siquiera competente!) Pero a partir de XCode 6, parece que puede hacer esto en IB.

  1. Seleccione el objeto.
  2. Muestre el inspector de tamaño (haga clic en la regla)

  3. Haga doble clic en el rectángulo de restricción (¡no es obvio! "Editar" lo lleva a otro lugar)

  1. Aquí puede configurar el multiplicador como en la respuesta anterior.

Me gustaría asignar puntos a lo largo de una línea.

La longitud de la línea depende del dispositivo y la orientación, y siempre se extiende por toda la pantalla. Por lo tanto, tendría más sentido para mí colocar los puntos usando un valor de porcentaje relativo .

Hasta ahora solo he encontrado restricciones definidas en algún tipo de valor de punto ( Doc )

¿Es posible usar valores porcentuales como restricciones también? ¿Alguna idea sobre cómo posicionar estos puntos de una manera escalable ... o necesito hacer esta conversión / posicionamiento "manualmente"?


Sí, puedes posicionar el punto como una fracción del ancho de la vista. El método NSLayoutConstraint, constraintWithItem: attribute: relatedBy: toItem: attribute: multiplier: constant :, tiene ese parámetro multiplicador que le permite usar una relación fraccional entre una supervista y su subvista. El borde derecho de la supervista será el ancho de esa vista (la pantalla si es una vista de ancho completo), por lo que si crea una restricción como la de abajo, el punto se colocará a una distancia fraccional a lo largo de la línea:

-(void)viewDidLoad { [super viewDidLoad]; [self.view removeConstraint:self.leftConDark]; [self.view removeConstraint:self.leftConLight]; NSLayoutConstraint *lcd = [NSLayoutConstraint constraintWithItem:self.darkButton attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:.5 constant:0]; NSLayoutConstraint *lcl = [NSLayoutConstraint constraintWithItem:self.lightButton attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:.9 constant:0]; [self.view addConstraints:@[lcd,lcl]]; }

En este ejemplo estoy posicionando dos UIButtons (tipo de información oscuro y claro). Los agregué en IB e hice IBOutlets a sus restricciones que tienen al lado izquierdo de la vista (eso es lo que el sistema me dio, podría haber estado en el lado derecho; no importa, ya que solo los eliminas de todos modos . Si está haciendo los puntos en el código, no tendría que hacer esto). En el código, elimino esas restricciones y luego agrego nuevas que colocarán el centro de los botones al 50% y al 90% del recorrido en la pantalla.