2010-10-11 14 views

Odpowiedz

35

Możesz uruchomić UIBarButtonItem z niestandardowym widokiem, który zawiera zarówno obraz, jak i tekst. Oto przykład, który używa UIButton. Odpowiedź

UIImage *chatImage = [UIImage imageNamed:@"08-chat.png"]; 

UIButton *chatButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[chatButton setBackgroundImage:chatImage forState:UIControlStateNormal]; 
[chatButton setTitle:@"Chat" forState:UIControlStateNormal]; 
chatButton.frame = (CGRect) { 
    .size.width = 100, 
    .size.height = 30, 
}; 

UIBarButtonItem *barButton= [[[UIBarButtonItem alloc] initWithCustomView:chatButton] autorelease]; 
self.toolbar.items = [NSArray arrayWithObject:barButton]; 
+0

W ostatnim wierszu pojawia się komunikat o błędzie z informacją, że pasek narzędzi "Poproś o element członkowski" nie jest strukturą lub połączeniem. Jak to zrobić za pomocą self.navigationItem .rightBarButtonItem? –

+1

W takim przypadku zamień ostatni wiersz na "self.navigationItem.rightBarButtonItem = barButton;". Możesz też użyć tej metody: http://developer.apple.com/library/ios/documentation/uikit/reference /UINavigationItem_Class/Reference/UINavigationItem.html#//apple_ref/doc/uid/TP40006933-CH3-SW17. –

+0

Próbowałem i nic się nie wyświetla. –

2

Kris Markel jest to dobry początek (tylko < iOS7), ale jeśli używasz koloru odcień, wount pracować dla obrazu i wyróżnionego stanu przycisku.

Utworzono kategorię, która utworzy element UIBarButtonItem (leftBarButtonItem), który wygląda i zachowuje się jak normalny przycisk powrotu na system iOS7. Rzucić okiem na: https://github.com/Zero3nna/UIBarButtonItem-DefaultBackButton

7
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal]; 
[button addTarget:target action:@selector(buttonAction:)forControlEvents:UIControlEventTouchUpInside]; 
[button setFrame:CGRectMake(0, 0, 53, 31)]; 
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(3, 5, 50, 20)]; 
[label setFont:[UIFont fontWithName:@"Arial-BoldMT" size:13]]; 
[label setText:title]; 
label.textAlignment = UITextAlignmentCenter; 
[label setTextColor:[UIColor whiteColor]]; 
[label setBackgroundColor:[UIColor clearColor]]; 
[button addSubview:label]; 
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.leftBarButtonItem = barButton; 
6

Proponuję sposób jak to zrobić przy użyciu Storyboard:

  1. przeciągnij i upuść do paska zwykły UIView. Zostanie on automatycznie zawinięty do elementu przycisku Bar. Dostosuj szerokość widoku w "Inspektorze rozmiaru". Zmień kolor tła widoku, aby wyczyścić kolor.

enter image description here

  1. Put UIButton i UILabel wewnątrz View. Możesz użyć ograniczeń, aby dostosować swoje pozycje. Możesz również umieścić go na zewnątrz widoku, na przykład trochę wyżej lub mniej (jak na moim obrazku). Umieść obrazy domyślne i wyróżnione dla UIButton.

  2. Przycisk paska kopiowania Ustaw i ustaw inne przyciski. Dodaj elastyczne przestrzenie.

  3. Twórz placówki.

  4. Gotowe :). Po uruchomieniu aplikacji, można uzyskać paska narzędzi tak:

enter image description here

PS: Here można przeczytać, jak utworzyć podklasę UIToolbar za pomocą .xib

+0

To powinno być poprawna odpowiedź. Naprawdę czyste! – Corona

Powiązane problemy