iPhone: Adding Info button as right bar button item in navigation bar in code

前端 未结 4 391
北海茫月
北海茫月 2021-02-04 06:42

Has anyone had any success creating an info button (italic \'i\' in a circle) in code (read: without Interface Builder), and then assigning it as the right bar button item of a

4条回答
  •  生来不讨喜
    2021-02-04 07:38

    Here's a pretty good looking solution that I think covers all the points people brought up in the comments above. Similar to the accepted answer, but this approach includes extra spacing (via modifying the frame) so that the button isn't smashed up against the right edge.

    // Create the info button
    UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
    
    // Adjust the frame by adding an addition 10 points to its width so the button is padded nicely
    infoButton.frame = CGRectMake(infoButton.frame.origin.x, infoButton.frame.origin.y, infoButton.frame.size.width + 10.0, infoButton.frame.size.height);
    
    // Hook the button up to an action
    [infoButton addTarget:self action:@selector(showInfoScreen) forControlEvents:UIControlEventTouchUpInside];
    
    // Add the button to the nav bar
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
    
    // Also make sure to add a showInfoScreen method to your class!
    

提交回复
热议问题