Si usted realmente desea conseguir marco titleView
's (en su vista de nivel superior espacio de coordenadas), se puede hacer esto:
[self.navBar layoutIfNeeded];
CGRect titleViewFrameInTopLevelViewSpace = [self.navigationItem.titleView
convertRect:self.navigationItem.titleView.bounds
toView:self.view];
Es necesario hacer layoutIfNeeded
si sólo ha asignado titleView
, porque de forma predeterminada, la barra de navegación no representará sus subvistas hasta la próxima pasada a través del ciclo de ejecución.
Dicho esto, el titleView
se centrará automáticamente, si cabe. Creo que está configurando el marco (o los límites) de su vista personalizada demasiado grande. He probado esto de dos maneras:
me juego hasta la titleView
directamente en el XI ter. Simplemente arrastré una Vista desde la biblioteca de Objetos al centro de la barra de navegación:
Ajustó la vista a 128x33 automáticamente. Los controladores de cambio de tamaño me permiten ajustar el tamaño. Permanece centrado hasta que se superpone al botón Categorizar. Luego cambia a la izquierda.
que establezca la propiedad titleView
en viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 33)];
customView.backgroundColor = [UIColor greenColor];
self.navItem.titleView = customView;
}
El resultado es el siguiente:
Gracias Rob. Esto es lo que causaba que la vista no se centrara. – ChrisP