telefono - no me aparece la barra de arriba iphone
ColocaciĆ³n de una vista personalizada basada en UIBarButtonItem en la barra de navegaciĆ³n sin el relleno horizontal predeterminado (2)
¿Cómo elimino el relleno horizontal a la izquierda y a la derecha de los elementos personalizados de UINavigationBar para la izquierda y la derecha? Parece que hay ~ 10 puntos de relleno que iOS configura de forma predeterminada.
Estoy personalizando los botones de la barra de navegación izquierda y derecha (he renunciado a intentar establecer mi propio backButtonItem, así que solo estoy usando el leftBarButtonItem).
En cualquier caso (izquierda o derecha), al presionar estos botones personalizados indica que Apple parece conservar un poco de relleno a la izquierda de la izquierdaBarButtonItem, ya la derecha de la derechaBarButtonItem; Independientemente de cuán ancho haga las propiedades de fondo e imagen personalizadas del UIButton que coloco dentro del elemento del botón de la barra izquierda / derecha como su vista personalizada.
Como UIBarButtonItems no tiene un "marco" al que pueda acceder, no puedo ubicarlos dentro de su supervista como lo hago con UIViews normales.
¿Alguna sugerencia sobre cómo eliminar este relleno predeterminado? Vea la captura de pantalla adjunta para ver el bit que estoy tratando de reducir a un ancho de cero. En la captura de pantalla, el icono más aparece desplazado a la derecha porque le di un recuadro; pero la imagen de fondo resaltada, también presumiblemente utilizando ese recuadro, se recorta en su lado derecho).
Ver imagen en: https://skitch.com/starbaseweb/rj2e5/ios-simulator
Como referencia, así es como estoy creando mi UIBarButtonItem personalizado (en este caso, es el botón derecho):
- (UIBarButtonItem *)customAddButtonItemWithTarget:(id)target action:(SEL)action {
UIButton *customButtonView = [UIButton buttonWithType:UIButtonTypeCustom];
customButtonView.frame = CGRectMake(0.0f, 0.0f, 45.0f, 44.0f);
[customButtonView setBackgroundImage:
[UIImage imageNamed:@"bgNavBarButton-OutsideRight-Normal.png"]
forState:UIControlStateNormal];
[customButtonView setBackgroundImage:
[UIImage imageNamed:@"bgNavBarButton-OutsideRight-Highlighted.png"]
forState:UIControlStateHighlighted];
[customButtonView setImage:
[UIImage imageNamed:@"bgNavBarButton-Add-Normal.png"]
forState:UIControlStateNormal];
[customButtonView setImage:
[UIImage imageNamed:@"bgNavBarButton-Add-Highlighted.png"]
forState:UIControlStateHighlighted];
[customButtonView addTarget:target action:action
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *customButtonItem = [[[UIBarButtonItem alloc]
initWithCustomView:customButtonView] autorelease];
[customButtonView setImageEdgeInsets:UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f)];
//customButtonItem.imageInsets = UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f);
return customButtonItem;
}
55 Como se comentó anteriormente, la solución que elegí se basa en esta respuesta a una pregunta diferente, pero muy relacionada: Cómo ajustar el relleno izquierdo y derecho de UIToolBar . También es facilitado por (y depende de) iOS5, que le permite configurar múltiples botones en el lado izquierdo o derecho, en lugar de solo uno.
Aquí hay un ejemplo de cómo eliminar el relleno a la izquierda de un elemento de botón izquierdo personalizado:
UIBarButtonItem *backButtonItem // Assume this exists, filled with our custom view
// Create a negative spacer to go to the left of our custom back button,
// and pull it right to the edge:
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil action:nil];
negativeSpacer.width = -5;
// Note: We use 5 above b/c that''s how many pixels of padding iOS seems to add
// Add the two buttons together on the left:
self.navigationItem.leftBarButtonItems = [NSArray
arrayWithObjects:negativeSpacer, backButtonItem, nil];
¡Y con esto, el relleno izquierdo para el elemento del botón de la barra izquierda en una barra de navegación, se ha ido!
NOTA : Esto me ha funcionado en iOS5 e iOS6. Dado que iOS7 es considerablemente diferente (de las demostraciones públicas), aquellos de ustedes con las primeras semillas de iOS7 deberían probar si algo tan involuntario, como este truco, continuará funcionando para ustedes más allá de iOS6.
He intentado esto y funciona:
1) Cree una subclase de UIToolbar personalizada, que no hace nada en -drawRect :, y no es opaca, y tiene backgroundColor = [UIColor clearColor].
2) Cree un UIBarButtonItem personalizado con la barra de herramientas como vista personalizada.
3) Agregue sus botones a la barra de herramientas personalizada.
4) En su barra de herramientas personalizada anule -layoutSubviews y haga su propio espaciado.