Centrar una etiqueta en un UIView
-
09-09-2019 - |
Pregunta
¿Cuál es la mejor manera de centrar una etiqueta en un UIView
? Si haces algo como
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.origin.x / 2, view.frame.origin.y / 2, 50.0, 50.0)];
A continuación, se está configurando el punto de la etiqueta de origen hasta el centro de la vista. La mejor apuesta sería la de establecer el centro de la vista a ese punto utilizando la propiedad del centro. Así que he intentado usar el siguiente código:
UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];
CGRect frame = aView.frame;
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125.0f, 30.0f)];
[aLabel setCenter:CGPointMake(frame.origin.x / 2, frame.origin.y / 2)];
Esto produce una etiqueta que es más o menos fuera de los límites de la vista en la esquina superior izquierda.
Solución
La principal cosa que está haciendo mal está tomando la mitad de los valores, en lugar de la mitad de la tamaños
Sin embargo, no es necesario que incluso calcular que en este caso - acaba de hacer algo como lo siguiente:
UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125, 30)];
aLabel.center = aView.center;
(tenga en cuenta, no es necesario para obligar a esas coordenadas flotadores - en este caso la escritura como enteros parece más legible).
Además, es una cuestión de estilo - pero ya que usted ya está usando sintaxis de la propiedad (aView.backgroundColor
) se puede también utilizar para la propiedad del centro de demasiado: -)
Otros consejos
Para posicionar cualquier niño centrado horizontalmente en uno de los padres se calcularía su posición como tal;
childX = (parentWidth - childWidth) / 2
(Esto también se aplica a la altura).