Agregando restricciones programáticamente en Objective-C

Necesito agregar algunas restricciones a un UIButton progtwigción. Necesito que se centre horizontalmente en supervisión, cinput verticalmente en supervisión, relación de aspecto con supervisión y relación de aspecto con uno mismo.

¿Alguien me puede ayudar por favor?

Gracias.

Le daré la vuelta a la bola para que pueda ver la idea general; de lo contrario, utilice la documentation proporcionada por Larme.

Agregue la restricción en su supervisión (probablemente su controller de vista).

 NSLayoutConstraint *centreHorizontallyConstraint = [NSLayoutConstraint constraintWithItem:self.uiButton attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0]; [self.view addConstraint:centreHorizontallyConstraint]; 

Como puede ver, estamos diciendo que el atributo center x de UIButton también es el atributo center x de la vista View Controllers sin desplazamientos adicionales (multiplicador establecido en 1.0 y constante 0).

Asegúrese de agregarlo a la vista del controller de vista, no al button, porque el button no se ha representado en este punto y, por lo tanto, ¡no puede agregarle una restricción! (Por favor, alguien me corrija si me equivoco aquí). Agrego mis restricciones en el método viewDidLoad.

Encontré este tutorial mejor.

http://www.tutorialspoint.com/ios/ios_auto_layouts.htm

Mi requisito era establecer:

  • Espacio principal
  • Espacio superior
  • ancho fijo
  • altura fija

Agregar NSLayoutConstraint con el código siguiente pude lograrlo

 self.btnCoin.translatesAutoresizingMaskIntoConstraints = NO; /* Leading space to superview */ NSLayoutConstraint *leftButtonXConstraint = [NSLayoutConstraint constraintWithItem:self.btnCoin attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self attribute: NSLayoutAttributeLeft multiplier:1.0 constant:30]; /* Top space to superview Y*/ NSLayoutConstraint *leftButtonYConstraint = [NSLayoutConstraint constraintWithItem:self.btnCoin attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self attribute: NSLayoutAttributeTop multiplier:1.0f constant:258]; /* Fixed width */ NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.btnCoin attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:35]; /* Fixed Height */ NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.btnCoin attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:12]; /* 4. Add the constraints to button's superview*/ [self addConstraints:@[leftButtonXConstraint, leftButtonYConstraint, widthConstraint, heightConstraint]]; 

En el código anterior, establezco constraints button izquierdo. Aquí está la salida:

Retrato

Paisaje