У меня был собственный UIBarButtonItem со встроенным uibutton через раскадровку. Это кнопка карты. см. параметры на этом скриншоте, мне пришлось использовать свойство background вместо Image.
Но когда я попытался программно настроить некоторые uibarbuttons, кнопки стали меньше. У меня был тот же результат с кнопкой карты, когда я использовал свойство Image.
Вот код, который я пишу для кнопки возврата,
UIImage *backButtonImage = [[UIImage imageNamed:@"Retour.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(21, 21, 21, 21)] ;
backButtonImage = [backButtonImage stretchableImageWithLeftCapWidth:0 topCapHeight:0];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);
[button setBackgroundImage:backButtonImage forState:UIControlStateNormal];
[button setBackgroundImage:backButtonImage forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:button] ;
self.navigationItem.leftBarButtonItem = backBarButton;
Я пробовал использовать resizableImageWithCapInsets, stretchImageWithLeftCapWidth или без него с тем же результатом, что и ниже (кнопка возврата должна иметь тот же размер, что и кнопка карты)
Я пробовал также методы iOS 5 setBackButtonBackgroundImage, но кнопка вообще не была настроена.