2013-09-06 13 views
19

Zastanawiam się, czy istnieje dobry sposób, aby UIButtons z multi-line titleLabel w konstruktorze interfejsów? Nie znalazłem żadnego i umieszczam osobny UILabel na górze każdego przycisku i śledzenie jego koloru w prasie i innych zdarzeniach nie jest bardzo proste.UIButton z wieloliniowym tytułem Etykieta w InterfaceBuilder

Być może istnieją lepsze alternatywy wykonane w kodzie, jeśli nie ma takiego sposobu w IB?

+0

Możliwe duplikaty http://stackoverflow.com/questions/604632/how-do-you-add-multi-line-text-to-a-uibutton –

Odpowiedz

54

Kod:

aby umożliwić wielu linii można użyć:

button.titleLabel.lineBreakMode = UILineBreakModeWordWrap; 
button.titleLabel.textAlignment = UITextAlignmentCenter; 
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal]; 

W iOS 6, UILineBreakModeWordWrap i UITextAlignmentCenter są przestarzałe, więc używać:

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
button.titleLabel.textAlignment = NSTextAlignmentCenter; 

Narzędzie do tworzenia interfejsu:

  • W interfejsie konstruktora wybrać UIButton
  • po prawej Utilities boczne okienka pod Atrybuty Inspektor, zobaczysz opcję linię przerwania
  • Wybierz zawijania
+1

Wspaniały! Zrobić tylko za pomocą kodu. –

+0

Czy to nie jest kopiuj/wklej z http://stackoverflow.com/a/1829420/466577 –

+0

@AsenKasimov jaki jest twój problem?Oryginalna odpowiedź/pytanie nie ma nic wspólnego ze scenami Storyboards –

4

Możesz zrobić wyłącznie w Konstruktorze interfejsów na kilka sposobów.

  • Najpierw po prostu ustaw funkcję zawijania. Daje to jednak ograniczone możliwości personalizacji.
  • Aby uzyskać więcej możliwości dostosowania, zmień "Zwykły tekst" na "Przypisany tekst", a następnie możesz zrobić większość rzeczy bez żadnego kodu.
0

Wystarczy wspomnieć, jeśli ktoś nie chce zawijany, ale nadal chcą osiągnąć wielofunkcyjnego tytuł wiersza na UIButton można to zrobić poprzez ustawienie lineBreakMode przed numberOfLines, To dlatego lineBreakMode wydaje niwelują numberOfLines określone stąd mamy robimy to w tej kolejności.

Swift:

button.titleLabel .lineBreakMode = NSLineBreakMode.byTruncatingTail

button.titleLabel .numberOfLines = 2

button.setTitle (myTitle na: UIControlState.normal)?

Powiązane problemy