Próbuję zmienić kolor tła UITableViewHeaderFooterView. Chociaż widok się pojawia, kolor tła pozostaje domyślnym kolorem. Otrzymuję dziennik z xcode mówiący:
Ustawienie koloru tła na UITableViewHeaderFooterView zostało wycofane. Zamiast tego użyj contentView.backgroundColor.
Jednak żadna z następujących opcji nie działa:
myTableViewHeaderFooterView.contentView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundColor = [UIColor blackColor];
Próbowałem też zmienić kolor tła widoku w pliku xib.
Jakieś sugestie? Dzięki.
iphone
ios
xcode
uitableview
Chun
źródło
źródło
Odpowiedzi:
Należy użyć myTableViewHeaderFooterView.tintColor lub przypisać niestandardowy widok tła do myTableViewHeaderFooterView.backgroundView.
źródło
tintColor
nie działa na iOS7. Mogłem zmienić kolor tylko przez przypisanie niestandardowego widoku:myTableViewHeaderFooterView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
iOS 8, 9, 10, 11 ...
Jedynym sposobem na ustawienie dowolnego koloru (z dowolną alfa) jest użycie
backgroundView
:Szybki
Obj-C
Odpowiedzi na komentarze
Żadna z tych innych opcji nie działa niezawodnie (pomimo poniższych komentarzy)
backgroundView
jest zmieniany automatycznie. (Nie ma potrzeby dodawania ograniczeń)Kontroluj alfa za pomocą
UIColor(white: 0.5, alpha: 0.5)
lubbackgroundView.alpha = 0.5
.(oczywiście każdy kolor się nada)
Korzystając z XIB , utwórz widok roota
UITableViewHeaderFooterView
i skojarz gobackgroundView
programowo:Zarejestruj się z:
Załaduj za pomocą:
↻ animacja powtórki
► Znajdź to rozwiązanie na GitHub i dodatkowe informacje na temat Swift Recipes .
źródło
view.BackgroundView = new UIView(view.Bounds) { BackgroundColor = UIColor.Clear };
Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.
W iOS 7
contentView.backgroundColor
działało u mnie,tintColor
nie.Chociaż
clearColor
nie zadziałało to dla mnie, rozwiązaniem, które znalazłem, jest ustawieniebackgroundView
właściwości na przezroczysty obraz. Może komuś to pomoże:źródło
Upewnij się, że ustawiłeś backgroundColor
contentView
dlaUITableViewHeaderFooterView
:Wtedy zadziała.
źródło
W moim przypadku wypróbowałem wszystko, co podano powyżej, ale nadal otrzymywałem ostrzeżenie „Ustawienie koloru tła na UITableViewHeaderFooterView zostało wycofane. Zamiast tego użyj contentView.backgroundColor”. potem próbowałem tego: w pliku xib kolor tła dla widoku nagłówka został wybrany, aby wyczyścić kolor zamiast domyślnego, gdy zmieniłem go na domyślny, ostrzeżenie zniknęło.
źródło
Aby uzyskać wyraźny kolor, używam
Wydaje mi się w porządku.
źródło
backgroundView = UIView()
i wtedybackgroundColor = .clear
było jedynym działającym rozwiązaniem. Dziękuję Ci.W przypadku jednolitych kolorów tła ustawienie
contentView.backgroundColor
powinno wystarczyć:W przypadku kolorów z przezroczystością, w tym
.clear
kolorów, to już nie działa:Aby uzyskać pełny przezroczysty nagłówek sekcji, ustaw
backgroundView
właściwość na pusty widok:Uważaj jednak na możliwe skutki uboczne. O ile widok tabeli nie jest ustawiony na „Pogrupowane”, nagłówki sekcji będą przyciągane u góry podczas przewijania w dół. Jeśli nagłówki sekcji są przezroczyste, zawartość komórki będzie widoczna, co może nie wyglądać dobrze.
Tutaj nagłówki sekcji mają przezroczyste tło:
Aby temu zapobiec, lepiej ustawić tło nagłówka sekcji na jednolity kolor (lub gradient) pasujący do tła widoku tabeli lub kontrolera widoku.
Tutaj nagłówki sekcji mają całkowicie nieprzezroczyste tło gradientowe:
źródło
W konstruktorze interfejsu podnieś plik .xib, na górnym elemencie, w Inspektorze atrybutów ustaw domyślny kolor tła. Następnie przejdź do widoku zawartości i ustaw tam kolor tła (odniesienie do https://github.com/jiecao-fm/SwiftTheme/issues/24 ).
źródło
Na iOS9
headerView.backgroundView.backgroundColor
działało dla mnie:Na systemów iOS 8 używałem
headerView.contentView.backgroundColor
bez problemów, ale teraz z iOS 9, byłem coraz dziwny problem, który wykonany kolor tła nie wypełniać całą przestrzeń komórki. Więc spróbowałem tylkoheaderView.backgroundColor
i otrzymałem ten sam błąd z OP.Więc teraz wszystko działa świetnie i bez ostrzeżeń, używając
headerView.backgroundView.backgroundColor
źródło
jeśli utworzyłeś niestandardową podklasę
UITableViewHeaderFooterView
withxib
file, powinieneś przesłonićsetBackgroundColor
. Pozostaw to puste.A to rozwiąże Twój problem.
źródło
Jeśli dostosowujesz komórkę nagłówka sekcji za pomocą Storyboard / Nib , upewnij się, że kolor tła jest domyślny dla widoku „Nagłówek sekcji tabeli”.
A jeśli masz podklasę
UITableViewHeaderFooterView
i używasz nib, to co musisz zrobić, to utworzyćIBOutlet
dla widoku zawartości i nazwać go np.containerView
. Nie należy tego mylić z tymcontentView
, który jest rodzicem tego widoku kontenera.W tej konfiguracji
containerView
zamiast tego zmieniasz kolor tła .źródło
Próbowałem z łańcuchem pojawienia sięWhenContainedIn i zadziałało dla mnie.
źródło
może dlatego, że backgroundView nie istnieje
to działa dla mnie.
źródło
iOS 12, Swift 5. Jeśli chcesz (lub próbujesz!) użyć proxy wyglądu, działa następujące rozwiązanie:
lub
źródło
Zapomnij o trudnościach.
Dodaj do swojego projektu
UITableViewHeaderFooterView+BGUpdate.swift
z kodem poniżej:Użycie jest proste, zgodnie z oczekiwaniami:
Przykłady użycia :
1) U delegata
tableView:viewForHeaderInSection:
:lub
2) W klasie niestandardowego widoku nagłówka:
źródło
Ustawienie BackgroundView z wyraźnym kolorem działa dobrze w przypadku widocznych nagłówków. Jeśli tabela jest przewijana, aby wyświetlić nagłówki na dole, to rozwiązanie nie powiedzie się.
PSMoja tabela składa się tylko z nagłówków bez komórek.
źródło
Szybki:
źródło
Utwórz UIView i ustaw kolor tła, a następnie ustaw go na self.backgroundView.
źródło
Czuję się zmuszony podzielić się swoim doświadczeniem. Miałem ten fragment kodu, który działał dobrze z iOS 10 i iOS 11
headerView?.contentView.backgroundColor = .lightGray
Potem nagle zdecydowałem się wdrożyć aplikację na iOS 9, ponieważ jest kilka urządzeń (iPad mini starszej generacji nie aktualizuje się do żadnego systemu operacyjnego poza 9) - jedyne rozwiązanie, które działało na wszystkich iOS 9, 10 i 11 polegało na zdefiniowaniu widoku bazowego dla nagłówka, który następnie zawiera wszystkie inne podglądy nagłówka, połączenie go z scenorysem i ustawienie
backgroundColor
tego widoku bazowego.Będziesz chciał uważać podczas okablowania gniazdka, aby go nie nazywać:
backgroundView
ponieważ w niektórych jest już nieruchomość o tej nazwiesuperclass
. Zadzwoniłem do mniecontainingView
Również podczas okablowania sterowania gniazdem kliknij widok,
Document Outline
aby upewnić się, że nie jest podłączony dofile owner
źródło
źródło