Размещение пользовательского UIBarButtonItem на основе представления на панели навигации без горизонтального заполнения по умолчанию

Как мне удалить горизонтальные отступы слева и справа от пользовательских левых и правых элементов UINavigationBar? Кажется, есть ~ 10 точек заполнения, которые iOS устанавливает по умолчанию.

Я настраиваю кнопки левой и правой панели навигации (я отказался от попыток установить свой собственный backButtonItem, поэтому я просто использую leftBarButtonItem) .

В любом случае (влево или вправо) нажатие этих настраиваемых кнопок указывает на то, что Apple, похоже, сохраняет некоторые отступы слева от leftBarButtonItem, и справа от rightBarButtonItem; независимо от того, насколько широкими я делаю настраиваемый фон и свойства изображения UIButton, я помещаю внутри элемента кнопки левой / правой панели в качестве настраиваемого представления.

Поскольку UIBarButtonItems не имеют "рамки", к которой я могу получить доступ, я не могу их разместить в их супервизоре, как я могу обычные UIViews.

Есть предложения, как удалить это заполнение по умолчанию? См. Прикрепленный снимок экрана, чтобы увидеть бит, который я пытаюсь уменьшить до нулевой ширины. На снимке экрана значок плюса смещен вправо, потому что я сделал его вставкой; но выделенное фоновое изображение, также предположительно использующее эту вставку, обрезается с правой стороны).

См. изображение по адресу: https://skitch.com/starbaseweb/rj2e5/ios-simulator

Для ссылка, вот как я ' m создавая свой собственный UIBarButtonItem (в данном случае это правая кнопка):

- (UIBarButtonItem *)customAddButtonItemWithTarget:(id)target action:(SEL)action {
  UIButton *customButtonView = [UIButton buttonWithType:UIButtonTypeCustom];

    customButtonView.frame = CGRectMake(0.0f, 0.0f, 45.0f, 44.0f);

    [customButtonView setBackgroundImage:
        [UIImage imageNamed:@"bgNavBarButton-OutsideRight-Normal.png"] 
        forState:UIControlStateNormal];
    [customButtonView setBackgroundImage:
        [UIImage imageNamed:@"bgNavBarButton-OutsideRight-Highlighted.png"] 
        forState:UIControlStateHighlighted];

    [customButtonView setImage:
        [UIImage imageNamed:@"bgNavBarButton-Add-Normal.png"] 
        forState:UIControlStateNormal];
    [customButtonView setImage:
        [UIImage imageNamed:@"bgNavBarButton-Add-Highlighted.png"] 
        forState:UIControlStateHighlighted];

    [customButtonView addTarget:target action:action 
        forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *customButtonItem = [[[UIBarButtonItem alloc] 
        initWithCustomView:customButtonView] autorelease];
    [customButtonView setImageEdgeInsets:UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f)];

    //customButtonItem.imageInsets = UIEdgeInsetsMake(0.0f, 10.0f, 0.0f, 0.0f);

    return customButtonItem;    
}

31
задан idStar 17 January 2011 в 16:54
поделиться