Smaller active area for custom UIBarButtonItem

后端 未结 3 1888
面向向阳花
面向向阳花 2021-02-10 01:17

I have a UINavigationBar with a custom UIBarButtonItem (which uses a UIButton as its custom view). The problem is: the active area of the custom button is much too large, if I t

相关标签:
3条回答
  • 2021-02-10 01:38

    I think u haven't changed the size of the custom button... Try doing this... In Interface builder select the button which u want to reduce the active area and then press "Command+3" or "tools --> Size inspector" in that reduce 'W' and 'H' values... this will make the custom button smaller and so the active area also get reduced...

    ~Raviraja

    0 讨论(0)
  • 2021-02-10 01:44

    Are you adding the button through Interface Builder or are you doing it programmatically? Either way, you can use this line of code to set the bounds of the image:

    yourButton.bounds = CGRectMake( 0, 0, yourImage.size.width, yourImage.size.height );  
    

    If you want a full example, here's one I used in one of my apps:

        UIImage *image = [UIImage imageNamed:@"audio-off.png"];
        UIButton *myMuteButton = [UIButton buttonWithType:UIButtonTypeCustom];
        myMuteButton.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );    
        [myMuteButton setImage:image forState:UIControlStateNormal];
        [myMuteButton addTarget:self action:@selector(mute) forControlEvents:UIControlEventTouchUpInside];    
        UIBarButtonItem *myMuteBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myMuteButton];   
        navBar.leftBarButtonItem = myMuteBarButtonItem;
        [myMuteBarButtonItem release];
    
    0 讨论(0)
  • 2021-02-10 01:49

    I noticed this weirdness too. I found that using a container UIView fixes this. For example:

    UIButton *menuButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
    [menuButton addTarget:self action:@selector(revealMenu:) forControlEvents:UIControlEventTouchUpInside];
    [menuButton setImage:[UIImage imageNamed:@"menuIcon"] forState:UIControlStateNormal];
    UIView *menuButtonContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
    [menuButtonContainer addSubview:menuButton];
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:menuButtonContainer];
    
    0 讨论(0)
提交回复
热议问题