Nie mogę ustawić tytułu UIButton używając IB jako środka. Mój tytuł jest wieloliniowy.
Daje jak ten
Ale ja chcę taką
Dałem w tym miejsce, ale nie chcę tego robić. Ponieważ w niektórych przypadkach nie jest dokładnie wyrównany i wiem, że istnieje właściwość UILabel do ustawiania wyrównania, ale nie chcę pisać kodu do tego ... chcę tylko ustawić wszystko z IB.
Dzięki
ios
objective-c
uibutton
interface-builder
Inder Kumar Rathore
źródło
źródło
self.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
Odpowiedzi:
Dzięki temu uzyskasz dokładnie to, czego się spodziewałeś:
Cel C:
W przypadku iOS 6 lub nowszego to
jak wyjaśniono w odpowiedzi tyler53
Szybki:
Swift 4.x i nowsze
źródło
myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Użyj linii:
Powinno to wyśrodkować zawartość (w poziomie).
A jeśli chcesz ustawić tekst wewnątrz etykiety również na środku, użyj:
[labelOne setTextAlignment:UITextAlignmentCenter];
Jeśli chcesz użyć IB, mam tutaj mały przykład, który jest połączony w XCode 4, ale powinien zawierać wystarczająco dużo szczegółów (pamiętaj również, że na górze tego ekranu właściwości pokazuje zakładkę właściwości. Te same zakładki można znaleźć w XCode 3.x):
źródło
Rozwiązanie 1
Możesz ustawić ścieżkę klucza w scenorysie
Ustaw tekst na swój wielowierszowy tytuł, np.
hello
⌥ +↵multiline
Musisz nacisnąć ⌥ +, ↵aby przenieść tekst do następnego wiersza.
Następnie dodaj ścieżkę klucza
titleLabel.textAlignment
jakNumber
i wartości1
,1
środkiNSTextAlignmentCenter
titleLabel.numberOfLines
jakNumber
i wartość0
,0
oznacza dowolną liczbę wierszyNie zostanie to odzwierciedlone w IB / Xcode, ale będzie w środku w czasie wykonywania (urządzenie / symulator)
Jeśli chcesz zobaczyć zmiany w Xcode, musisz wykonać następujące czynności: (pamiętaj, że możesz pominąć te kroki)
Podklasuj przycisk UIButton, aby przycisk można było zaprojektować:
Przypisz tę możliwą do zaprojektowania podklasę do przycisków, które modyfikujesz:
Rozwiązanie 2
Jeśli chcesz napisać kod, wykonaj długi proces
1. Utwórz
IBOutlet
dla przycisku 2.Napisz kod w viewDidLoad
Rozwiązanie 3
W nowszej wersji xcode (mój to xcode 6.1) mamy przypisany tytuł własności
Wybierz,
Attributed
a następnie zaznacz tekst i naciśnij środkową opcję poniżejPS Tekst nie nadchodził wielowierszowy, dlatego muszę ustawić
btn.titleLabel.numberOfLines = 0
źródło
Line Breaking = Clip
, przekształci tekst na multiliniębtn.titleLabel.textAlignment
, działa świetnie.Do UIButton powinieneś użyć: -
źródło
Dla iOS 8 i Swift
btn.titleLabel.textAlignment = NSTextAlignment.Center
lub
btn.titleLabel.textAlignment = .Center
źródło
Dla tych z Was, którzy używają teraz systemu iOS 6 lub nowszego, UITextAlignmentCenter został wycofany. Teraz jest to NSTextAlignmentCenter
PRZYKŁAD:
mylabel.textAlignment = NSTextAlignmentCenter;
Działa doskonale.źródło
Dla Swift 4, xcode 9
źródło
Zakładając, że btn odwołuje się do UIButton, aby zmienić napis wielowierszowy tak, aby był wyśrodkowany w poziomie, możesz użyć następującej instrukcji w systemie iOS 6 lub nowszym:
źródło
UITextAlignmentCenter
jest przestarzałe w iOS6Zamiast tego możesz użyć tego kodu:
btn.titleLabel.textAlignment=NSTextAlinmentCenter;
źródło
Dla Swift 3.0
źródło
Dla Swift 4:
źródło
Właściwie możesz to zrobić w kreatorze interfejsów.
Powinieneś ustawić Tytuł na „Przypisane”, a następnie wybrać wyrównanie do środka.
źródło
Spróbuj w ten sposób:
źródło
Możesz to zrobić z poziomu storyboardu. Wybierz swój przycisk. Ustaw łamanie wiersza „Zawijanie wyrazów”, ustaw tytuł „Zwykły” na „Przypisany”. Wybierz „Wyrównanie do środka”. Ta część jest ważna => Kliknij przycisk ... (Więcej). I wybierz tryb łamania linii na „Zawijanie znaków”.
źródło
UIButton nie obsługuje funkcji setTextAlignment. Musisz więc skorzystać z setContentHorizontalAlignment, aby wyrównać tekst przycisku
W celach informacyjnych
źródło