¿Cuál es la mejor manera de posicionar una vista en relación con el tamaño de su supervista, cuando aún no se conocen los límites de la supervista?¿Cómo puedo posicionar una vista mediante programación usando puntos relativos?
Estoy tratando de evitar las coordenadas de codificación difícil, si es posible. Tal vez esto es una tontería, y si es así, esa es una respuesta perfectamente aceptable.
Me he encontrado con esto muchas veces cuando trabajo con una interfaz de usuario personalizada. El ejemplo más reciente es que estoy tratando de reemplazar el título de texto sin formato UINavigationItem
con una vista personalizada. Quiero que esa vista llene la supervista, pero además, quiero un UIActivityIndicatorView
en el lado derecho, inserte unos 2 píxeles y centrado verticalmente. Aquí está el código:
- (void) viewDidLoad
{
[super viewDidLoad];
customTitleView = [[UIView alloc] initWithFrame:CGRectZero];
customTitleView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
titleLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
titleLabel.lineBreakMode = UILineBreakModeWordWrap;
titleLabel.numberOfLines = 2;
titleLabel.minimumFontSize = 11.0;
titleLabel.font = [UIFont systemFontOfSize:17.0];
titleLabel.adjustsFontSizeToFitWidth = YES;
[customTitleView addSubview:titleLabel];
spinnerView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
spinnerView.center = CGPointMake(customTitleView.bounds.size.width - (spinnerView.bounds.size.width/2) - 2,
customTitleView.bounds.size.height/2);
spinnerView.hidesWhenStopped = YES;
[customTitleView addSubview:spinnerView];
self.navigationItem.titleView = customTitleView;
[customTitleView release];
}
aquí es mi problema: en el momento en que este código se ejecuta, customTitleView.bounds
sigue siendo ceros. La máscara de cambio de tamaño automático no ha tenido la oportunidad de hacer esto todavía, pero realmente quiero esos valores para que pueda calcular las posiciones relativas de otras sub-vistas (aquí, el indicador de actividad).
¿Esto es posible sin ser feo?
'' titleLabel' y spinnerView' son ambos objetos filtrados –
1 para la pregunta ya que tengo exactamente el mismo - con ganas de leer las respuestas – Till
'titleLabel' y' spinnerView' no se filtraron. Se lanzan a otra parte. –