How to add custom image in navigation bar button item?

前端 未结 12 1692
我寻月下人不归
我寻月下人不归 2020-12-13 09:26
 UIBarButtonItem *doneitem=[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(donePressed:)]autorelease];
           


        
相关标签:
12条回答
  • 2020-12-13 09:55

    Do this. It's way more simple.

    1. Put the image file in your project directory

    2. Add the file into Xcode (Right click on the Xcode project, add files to "Project Name")

    3. Select your UIBarButtonItem in Storyboard

    4. Click on "Image" and find your image (See Screenshot)

    5. Celebrate, because it will work perfectly and it requires no unnecessary code.

    enter image description here

    0 讨论(0)
  • 2020-12-13 09:59

    Here's what works for me. I found 30x30 to be a good size for the button in the nav bar. The UIImage scales to the button size automatically.

    UIImage *image = [UIImage imageNamed:@"XXXXXXXXXX"];
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button addTarget:self action:@selector(someAction) forControlEvents:UIControlEventTouchUpInside];
    button.adjustsImageWhenHighlighted = NO;
    UIBarButtonItem *rightButton =[[UIBarButtonItem alloc] initWithCustomView:button];
    self.navigationItem.rightBarButtonItem = rightButton;
    
    0 讨论(0)
  • 2020-12-13 10:01
    [doneItem setImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal];
    
    0 讨论(0)
  • 2020-12-13 10:06

    In case anyone needs Swift code for accepted answer:

    let infoImage = UIImage(named: "my-icon-32.png")
    let imgWidth = infoImage?.size.width
    let imgHeight = infoImage?.size.height
    let button:UIButton = UIButton(frame: CGRect(x: 0,y: 0,width: imgWidth!, height: imgHeight!))
    button.setBackgroundImage(infoImage, forState: .Normal)
    button.addTarget(self, action: Selector("openInfo"), forControlEvents: UIControlEvents.TouchUpInside)
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
    

    P.S. Gurpreet Singh answer is working only for transparent PNG also I have to set button tintcolor other than clearColor.

    0 讨论(0)
  • 2020-12-13 10:07

    In Swift

    Other solution using withRenderingMode(UIImage.RenderingMode.alwaysOriginal) method below:

    let img = UIImage(named: "picture")!.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
    let leftBarButtonItem = UIBarButtonItem(image: img, style: UIBarButtonItem.Style.plain, target: self, action: nil)
    self.navigationItem.leftBarButtonItem = leftBarButtonItem
    
    0 讨论(0)
  • 2020-12-13 10:07
       let sliderImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 30))
        sliderImageView.contentMode = .ScaleAspectFit
        sliderImageView.image = UIImage(named: "sliderMenu")
    
        OR
    
        var sliderImage = UIImage(named: "sliderMenu")
        navigationItem.leftBarButtonItem?.image = sliderImage
    
    0 讨论(0)
提交回复
热议问题