Próbuję dodać etykietę do mojego paska narzędzi. Przycisk działa świetnie, jednak kiedy dodaję obiekt etykiety, zawiesza się. Jakieś pomysły?
UIBarButtonItem *setDateRangeButton = [[UIBarButtonItem alloc] initWithTitle:@"Set date range"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(setDateRangeClicked:)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 20, 20)];
label.text = @"test";
[toolbar setItems:[NSArray arrayWithObjects:setDateRangeButton,label, nil]];
// Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];
// Reload the table view
[self.tableView reloadData];
ios
iphone
uibarbuttonitem
user8359
źródło
źródło
Dla tych, którzy używają Interface Builder do zaprojektowania twojego
UIToolBar
, jest to również możliwe przy użyciu samego Interface Builder.Aby dodać a
UILabel
do aUIToolBar
, musisz dodać ogólnyUIView
obiekt do swojegoUIToolBar
w IB, przeciągając nowyUIView
obiekt nadUIToolBar
.IB
automatycznie utworzy plik,UIBarButtonItem
który zostanie zainicjowany Twoim niestandardowymUIView
. Następnie dodaj aUILabel
doUIView
i edytujUILabel
graficznie, aby dopasować preferowany styl. Następnie możesz wizualnie ustawić stałe i / lub zmienne podkładki dystansowe według potrzeb, abyUILabel
odpowiednio ustawić .Musisz również ustawić tło zarówno
UILabel
iUIView
doclearColor
uzyskaćUIToolBar
pokazać poprzez prawidłowo podUILabel
.źródło
Odpowiedź answerBota okazała się bardzo przydatna, ale myślę, że znalazłem jeszcze łatwiejszy sposób w Interface Builder:
podłącz to BarButtonItem do właściwości w swojej klasie (to jest w języku Swift, ale byłoby bardzo podobne w Obj-C):
dodaj kolejną właściwość dla samej etykiety:
in viewDidLoad, dodaj następujący kod, aby ustawić właściwości etykiety, i dodaj go jako customView swojego BarButtonItem
Aby zaktualizować
UILabel
tekst:Wynik:
Musisz dzwonić za
lastUpdateLabel.sizetoFit()
każdym razem, gdy aktualizujesz tekst etykietyźródło
UILabel* label = [[UILabel alloc] init]; label.text = @"Hello"; label.font = [UIFont systemFontOfSize:16]; [label sizeToFit]; self.barItem.customView = label;
Jedną z rzeczy, do których używam tej sztuczki, jest utworzenie instancji
UIActivityIndicatorView
na wierzchuUIToolBar
, coś, co w przeciwnym razie nie byłoby możliwe. Na przykład tutaj mam aUIToolBar
z 2UIBarButtonItem
, aFlexibleSpaceBarButtonItem
, a następnie innyUIBarButtonItem
. Chcę wstawićUIActivityIndicatorView
literęUIToolBar
pomiędzy elastyczną przestrzenią a ostatnim (prawym) przyciskiem. Więc w moimRootViewController
robię co następuje,źródło
Detale
Pełna próbka
Wynik
źródło
Podobnie jak Matt RI używał konstruktora interfejsu. Ale
UIWebView
zamiast tego chciałem mieć 1 w środku, aby móc pogrubić niektóre teksty, a inne nie (jak w aplikacji pocztowej). WięcIBOutlet
html
aby uzyskać przezroczyste tło, dzięki czemu pasek narzędzi prześwitujeKod:
źródło
Jeśli chcesz dodać widok do widoku paska narzędzi, możesz spróbować tego:
źródło
Spróbuj tego:
Uwaga:
self.barItem
jestUIBarButtonItem
dodawana z biblioteki obiektów i umieszczana między dwoma elastycznymi przestrzeniami.innym sposobem jest usunięcie
[self.barItem setCustom:view]
linii i zmiana parametrówlabel
(width) tak, aby wypełniała cały pasek narzędzi i samodzielnie ustawiła wyrównanie do środka i czcionkę w kodzie,źródło