Czy ktoś może mi poinstruować, jak najłatwiej zmienić rozmiar czcionki dla tekstu w nagłówku sekcji UITableView?
Mam tytuły sekcji zaimplementowane następującą metodą:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Następnie rozumiem, jak skutecznie zmienić wysokość nagłówka sekcji za pomocą tej metody:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Mam komórki UITableView wypełnione przy użyciu tej metody:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Jednak utknąłem, jak faktycznie zwiększyć rozmiar czcionki - lub jeśli o to chodzi, styl czcionki - tekstu nagłówka sekcji?
Czy ktoś może pomóc? Dzięki.
Odpowiedzi:
Niestety może być konieczne zastąpienie tego:
W celu C:
W Swift:
Spróbuj czegoś takiego:
W celu C:
W Swift:
źródło
tableView:heightForHeaderInSection:
która może być uciążliwa.Innym sposobem, aby to zrobić, byłaby odpowiedź na
UITableViewDelegate
metodęwillDisplayHeaderView
. Przekazany widok jest w rzeczywistości instancją plikuUITableViewHeaderFooterView
.Poniższy przykład zmienia czcionkę, a także wyśrodkowuje tekst tytułu w komórce w pionie i poziomie. Zwróć uwagę, że powinieneś również zareagować, aby
heightForHeaderInSection
wszelkie zmiany wysokości nagłówka zostały uwzględnione w układzie widoku tabeli. (Oznacza to, że jeśli zdecydujesz się zmienić wysokość nagłówka w tejwillDisplayHeaderView
metodzie).Następnie możesz odpowiedzieć na
titleForHeaderInSection
metodę ponownego użycia tego skonfigurowanego nagłówka z różnymi tytułami sekcji.Cel C
Swift 1.2
(Uwaga: jeśli kontroler widoku jest potomkiem a
UITableViewController
, należałoby to zadeklarować jakooverride func
).Swift 3.0
Ten kod zapewnia również, że aplikacja nie ulegnie awarii, jeśli widok nagłówka jest inny niż UITableViewHeaderFooterView:
źródło
header.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
i / lubheader.detailTextLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
wraz z innymi potrzebnymi krokami (patrz tutaj: captechconsulting.com/blog/john-szumski/… )Chociaż odpowiedź mosca1337 jest poprawnym rozwiązaniem, bądź ostrożny z tą metodą. W przypadku nagłówka z tekstem dłuższym niż jeden wiersz będziesz musiał wykonać obliczenia wysokości nagłówka,
tableView:heightForHeaderInSection:
która może być uciążliwa.Znacznie preferowaną metodą jest użycie interfejsu API wyglądu:
Spowoduje to zmianę czcionki, pozostawiając jednocześnie stół do samodzielnego zarządzania wysokościami.
Aby uzyskać optymalne wyniki, podklasuj widok tabeli i dodaj go do łańcucha zawierania (in
appearanceWhenContainedIn:
), aby upewnić się, że czcionka zostanie zmieniona tylko dla określonych widoków tabeli.źródło
- tableView:viewForHeaderInSection:
prawej strony? W takim przypadku czcionkę można ustawić bezpośrednio w tym miejscu. I tak właśnie działa rozwiązanie @ mosca1337.UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
Na iOS 7 używam tego,
Oto wersja Swift 3.0 ze zmianą rozmiaru nagłówka
źródło
Swift 3:
Najprostszy sposób dostosowania tylko rozmiaru:
źródło
Swift 2.0 :
Zaimplementuj viewForHeaderInSection, na przykład:
Zaimplementuj willDisplayHeaderView, na przykład:
Pamiętaj: jeśli używasz komórek statycznych, pierwszy nagłówek sekcji jest wyściełany wyżej niż inne nagłówki sekcji ze względu na górną część UITableView; aby to naprawić:
Zaimplementuj heightForHeaderInSection, na przykład:
źródło
Swift 4 wersja Leo Natan odpowiedź jest
Jeśli chcesz ustawić niestandardową czcionkę, możesz użyć
źródło
Dzięki tej metodzie możesz ustawić rozmiar czcionki, styl czcionki i tło nagłówka . są na to 2 metody
Pierwsza metoda
Druga metoda
źródło
Swift 2:
Zgodnie z zapytaniem OP dostosuj tylko rozmiar, nie ustawiając go jako pogrubionej czcionki systemowej lub cokolwiek innego:
źródło
To jest moje rozwiązanie z szybką 5.
Aby w pełni kontrolować widok sekcji nagłówka, musisz użyć metody tableView (: viewForHeaderInsection: :) w swoim kontrolerze, jak pokazano w poprzednim poście. Jest jednak kolejny krok: aby poprawić wydajność, firma Apple zaleca, aby nie generować nowego widoku za każdym razem, ale ponownie używać widoku nagłówka, tak jak ponowne wykorzystanie komórki tabeli. Jest to metoda tableView.dequeueReusableHeaderFooterView (withIdentifier:). Ale problem, który miałem, był taki, że gdy zaczniesz używać tej funkcji ponownego użycia, czcionka nie będzie działać zgodnie z oczekiwaniami. Inne rzeczy, takie jak kolor, wyrównanie wszystko w porządku, ale tylko czcionka. Jest kilka dyskusji, ale sprawiłem, że zadziałało jak poniżej.
Problem polega na tym, że tableView.dequeueReusableHeaderFooterView (withIdentifier :) różni się od tabeli tableView.dequeneReuseCell (:), która zawsze zwraca komórkę. Pierwsza zwróci zero, jeśli nikt nie jest dostępny. Nawet jeśli zwraca widok nagłówka ponownego użycia, nie jest to oryginalny typ klasy, ale UITableHeaderFooterView. Musisz więc dokonać oceny i postępować zgodnie z własnym kodeksem. Zasadniczo, jeśli jest zerowy, uzyskaj zupełnie nowy widok nagłówka. Jeśli nie zero, wymuś rzucenie, abyś mógł kontrolować.
źródło