2013-08-17 3 views
0

В настоящее время у меня есть панель навигации с кнопкой бара на нем, которая была создана в моей раскадровке:Заберите часть UIBarButton

Notes

Я хотел бы, чтобы забрать белую часть кнопки бара и сохраняйте только изображение. Их способ сделать это?

Когда я пытаюсь этот код там нет кнопки бара:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
[btn setBackgroundImage:[UIImage imageNamed:@"19-gear.png"] forState:UIControlStateNormal]; 
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:btn]; 
self.navigationController.navigationBar.topItem.leftBarButtonItem = barButton; 
+0

Показать свой код для создания элемента кнопки. – rmaddy

+0

@rmaddy Я создал его в своей раскадровке. –

+0

Есть ли способ установить стиль кнопки «plain» вместо «bordered»? Так или иначе, это будет сделано в коде. – rmaddy

ответ

2
IButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
btn.frame = CGRectMake(5,5,60,34); 
[btn setBackgroundImage:[UIImage imageNamed:@"19-gear.png"] forState:UIControlStateNormal]; 
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:btn]; 
self.navigationController.navigationBar.topItem.leftBarButtonItem = barButton; 

вы не установили рамку вашей кнопки, что, почему его не приходя на панели навигации.

+0

да, приятно поймать с вашей стороны ... +1 к вам. –

+0

Большое вам спасибо !!! –

1

Почему бы просто не использовать CustomView?

Как и в UIBarButtonItem initWithCustomView:

Тогда у вас есть контроль над точно, как появляется кнопка (который вы должны предоставить графики для).

Here's a related question, в котором говорится о том, как настроить пользовательский вид, чтобы отвечать на клики.

EDIT:

Вот немного кода, это путь по вершине в плане проверки ошибок, но я почти уверен, что-то не совсем правильно в наборе вверх. Используя это, мы могли бы узнать, что это такое.

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
if(btn) 
{ 
    [btn setBackgroundImage:[UIImage imageNamed:@"19-gear.png"] forState:UIControlStateNormal]; 
    UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:btn]; 
    if(barButton) 
    { 

     if(self.navigationController) 
     { 
      if(self.navigationController.navigationBar) 
      { 
       if(self.navigationController.navigationBar.topItem) 
       { 
        self.navigationController.navigationBar.topItem.leftBarButtonItem = barButton; 
       } else { 
        NSLog(@"why is topItem null?"); 
       } 
      } else { 
       NSLog(@"navigationBar appears to be null"); 
      } 
     } else { 
      NSLog(@"navigationController is null"); 
     } 
    } else { 
     NSLog(@"did not create UIBarButtonItem"); 
    } 
} else { 
    NSLog(@"did not create UIButton"); 
} 
+0

Что следует использовать в качестве пользовательского представления? –

+0

Вы можете на самом деле передать «UIButton» в качестве пользовательского представления. :-) Взгляните на ответ ghazi_jaffary в связанном выше вопросе. –

+0

Спасибо, но есть ли способ сделать это в раскадровке? –

Смежные вопросы