2011-08-21 10 views
5

Aquí está el código que estoy usando para insertar un UIBarButtonItem personalizado como leftButton en mi barra de navegación. El problema es que el botón está demasiado cerca del borde izquierdo y no puedo descifrar cómo aplicar sangría un poco sin usar otra imagen con relleno a la izquierda.¿Cómo puedo compensar la imagen UIButton dentro de UIBarButtonItem en navBar?

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; 
btn.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 
[btn setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal]; 
self.myBtn = btn; 
[btn release]; 

UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:self.myBtn]; 
self.myBarBtn = barBtn; 
self.myBarBtn.imageInsets = UIEdgeInsetsMake(0, 5, 0, 0); 
[self.navigationItem setLeftBarButtonItem:self.myBarBtn animated:YES]; 
[barBtn release]; 

He intentado ajustar el marco, edgeInsets, todo sin ninguna suerte. El barButtonItem todavía está demasiado cerca del borde izquierdo. ¿Hay alguna manera de compensar la imagen del botón?

Thx

Respuesta

2
UIImage *buttonImage = [UIImage imageNamed:@"Close.png"]; 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:buttonImage forState:UIControlStateNormal]; 
    button.imageEdgeInsets = UIEdgeInsetsMake(0, -40, 0, 0); 
    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 

    [button addTarget:self action:@selector(donePressed:) forControlEvents:UIControlEventTouchUpInside]; 

    //create a UIBarButtonItem with the button as a custom view 
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
    self.navigationItem.leftBarButtonItem = customBarItem; 
0

que queda la costumbre o el botón derecho con el lenguaje veloz

let buttonEdit: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
buttonEdit.frame = CGRectMake(0, 0, 40, 40) 
buttonEdit.setImage(UIImage(named:"nav-right-Y.png"), forState: UIControlState.Normal) 
buttonEdit.addTarget(self, action: "rightNavItemEditClick", forControlEvents: UIControlEvents.TouchUpInside) 
var rightBarButtonItemEdit: UIBarButtonItem = UIBarButtonItem(customView: buttonEdit) 
self.navigationItem.rightBarButtonItem = rightBarButtonItemEdit 
+0

¿Cómo se puede compensar I después de usar este enfoque? – senty

Cuestiones relacionadas