Вот довольно симпатичное решение, которое, я думаю, охватывает все вопросы, поднятые людьми в комментариях выше. Аналогичен принятому ответу, но этот подход включает дополнительный интервал (путем изменения фрейма), чтобы кнопка не разбивалась о правый край.
// 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!