guide developer classes apple adaptive ios objective-c autolayout uistoryboard

ios - developer - Alinear un centro de UIView creado mediante programación con un centro de vista de diseño automático



size classes xcode 9 (2)

Debe anular el siguiente método en su controlador de vista:

- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; self.smallView.frame.center = self.largeView.frame.center; }

UIView un UIView en Storyboard que se centrará exactamente en el centro del Controlador de Vista con diseño automático, y funciona bien en diferentes tamaños de dispositivo. Yo llamo a esto largerView .

Sin embargo, me gustaría crear programáticamente una UIView más UIView llamada smallerView más smallerView y centrar esta vista para que smallerView.center = largerView.center .

Me encuentro con un problema en el que dado que el diseño automático se utiliza en largerView , cada vez que uso el método anterior, mi smallerView nunca se centra en un largerView.center . largerView que tomará las coordenadas largerView de largerView tal como aparecen en Storyboard, en función del diseño específico del dispositivo que estoy usando (en este caso, las dimensiones anteriores del iPhone 5), pero no del centro actualizado como se ve afectado por el diseño automático .

Se puede debatir un problema similar aquí, excepto que se basa en Swift. Sé cómo se crean las restricciones mediante programación, pero no estoy seguro de cómo obtener las coordenadas "actualizadas" de una vista después de aplicar el diseño automático.

¡Gracias!


Si su vista más pequeña es una subvista de largerView:

self.smallerView.center = CGPointMake(self.largerView.frame.size.width / 2, self.largerView.frame.size.height / 2);

Si su vista más pequeña tiene la misma super visión que largerView:

self.smallerView.center = self.largerView.center;