Reproducción automática sin colocar el button de inicio de session de Google como se esperaba

Soy iOS principiante e bash aprender haciendo un proyecto. Necesito agregar un button Iniciar session de Google + en el medio de la pantalla. Así es como se ven mis limitaciones de autolayout

introduzca la descripción de la imagen aquí
y

introduzca la descripción de la imagen aquí
y cuando ejecuto esto, veo lo siguiente

introduzca la descripción de la imagen aquí
y
introduzca la descripción de la imagen aquí

Pregunta
¿Cómo puedo asegurarme de que mi vista se encuentre en el medio cuando agrego restricciones? ¿Qué configuration me falta y necesito aprender?

Gracias

ACTUALIZACIÓN 01
Según la sugerencia de @ Dean, hice el cambio como

introduzca la descripción de la imagen aquí

Pero cuando ejecuto esto, todavía lo veo como

introduzca la descripción de la imagen aquí

¿Podría ser por el tamaño de la image? ¿Cómo lo sé?

ACTUALIZACIÓN 02
Después de resolver todos los problemas de reproducción automática, veo lo siguiente
introduzca la descripción de la imagen aquí

Deseará seleccionar el button y eliminar todas las restricciones que tenga.

Vaya al menu del Editor. Seleccione Alinear y luego Contenedor de centro horizontal y Contenedor de centro vertical. Esas son todas las restricciones que desea en el button.

Imagen del menú XCode Editor

Dado que hemos establecido sus restricciones, ahora son correctas. Parece que su button, proveniente de Google, informa inicialmente su ancho máximo como su propiedad de ancho. Una vez que establece el estilo y la image se carga, el ancho real está determinado por la cadena de post localizada resultante.

[self.view setNeedsLayout] y [self.view layoutIfNeeded] alguna parte después de que se completó todo el procesamiento. Es probable que obtenga el ancho correcto y ajuste el layout centrado según lo deseado.

Si está agregando mediante progtwigción el button en la implementación de su class de visualización, como en el ejemplo que siguió para configurar manualmente el marco y aún desea utilizar la reproducción automática, intente este código en lugar del código que copió de photohunt:

  GPPSignInButton *signInButton = [[GPPSignInButton alloc] init]; [signInButton setTranslatesAutoresizingMaskIntoConstraints:NO]; [signInButton setStyle:kGPPSignInButtonStyleWide]; [signInButton setColorScheme:kGPPSignInButtonColorSchemeLight]; NSLayoutConstraint *vConstraint = [NSLayoutConstraint constraintWithItem:signInButton attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]; NSLayoutConstraint *hConstraint = [NSLayoutConstraint constraintWithItem:signInButton attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]; [self.view addConstraint:vConstraint]; [self.view addConstraint:hConstraint]; [self.view addSubview:signInButton]; 

No puedo probarlo, pero como las restricciones ahora se agregan después de que el button se inicializa, estoy apostando a que el layout es correcto.

Encontré el problema, lo siguiente lo solucionó

 CGFloat x = roundf((320.0 - signInButton.frame.size.width) / 2.0); CGFloat y = roundf((80.0 - signInButton.frame.size.height) / 2.0); [signInButton setFrame:CGRectMake(x, y, signInButton.frame.size.width, signInButton.frame.size.height)]; [self addSubview:signInButton]; 

Después de search en Google, encontré una aplicación de ejemplo de iOS desarrollada por los desarrolladores de Google y se menciona https://developers.google.com/+/photohunt/ios#displaying_the_sign-in_button

Según ellos

Además, el button puede extenderse en casi todo el ancho, por lo que se usa el estilo de button ancho

Después de esto, vi que el button estaba centrado

introduzca la descripción de la imagen aquí

El problema ahora es que está ubicado en la parte superior de la página, pero ese es un problema aparte para tratar 🙂

ACTUALIZAR
Gracias @Fogmeister y @Dean. Según la sugerencia de @ Dean, hice el cambio para x y y como

 CGFloat x = roundf((float) ((self.view.bounds.size.width - signInButton.frame.size.width) / 2.0)); CGFloat y = roundf((float) ((self.view.bounds.size.height - signInButton.frame.size.height) / 2.0)); 

y se ubicó perfectamente en el modo vertical
introduzca la descripción de la imagen aquí
Sin embargo, en modo horizontal, esto todavía no se alinea muy bien
introduzca la descripción de la imagen aquí

¿Algunas ideas? (Ahora no estoy definiendo los valores que deberían romper Autolayout)