Estou tentando alterar a cor de fundo do UITableViewHeaderFooterView. Embora a exibição esteja aparecendo, a cor do plano de fundo permanece a cor padrão. Estou recebendo um log do xcode dizendo:
A configuração da cor de plano de fundo no UITableViewHeaderFooterView foi preterida. Em vez disso, use contentView.backgroundColor.
No entanto, nenhuma das seguintes opções funciona:
myTableViewHeaderFooterView.contentView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundColor = [UIColor blackColor];
Eu também tentei alterar a cor de fundo da exibição no arquivo xib.
Alguma sugestão? Obrigado.
iphone
ios
xcode
uitableview
Chun
fonte
fonte
Respostas:
Você deve usar myTableViewHeaderFooterView.tintColor ou atribuir uma exibição de plano de fundo personalizada a myTableViewHeaderFooterView.backgroundView.
fonte
tintColor
não estou trabalhando no iOS7. Eu poderia mudar de cor somente por exibição personalizada de atribuição:myTableViewHeaderFooterView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
iOS 8, 9, 10, 11 ...
A única maneira de definir qualquer cor (com qualquer alfa) é usar
backgroundView
:Rápido
Obj-C
Respostas aos Comentários
Nenhuma dessas outras opções funciona de maneira confiável (apesar dos comentários abaixo)
o
backgroundView
é redimensionado automaticamente. (Não há necessidade de adicionar restrições)Alfa de controle com
UIColor(white: 0.5, alpha: 0.5)
oubackgroundView.alpha = 0.5
.(claro, qualquer cor serve)
Ao usar o XIB , torne a visualização raiz ae
UITableViewHeaderFooterView
associebackgroundView
programaticamente:Registre-se com:
Carregar com:
Animation repetir animação
► Encontre esta solução no GitHub e detalhes adicionais sobre o Swift Recipes .
fonte
view.BackgroundView = new UIView(view.Bounds) { BackgroundColor = UIColor.Clear };
Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.
No iOS 7
contentView.backgroundColor
funcionou para mim,tintColor
não.Embora
clearColor
não tenha funcionado para mim, a solução que encontrei é definir abackgroundView
propriedade para uma imagem transparente. Talvez ajude alguém:fonte
Certifique-se de definir o backgroundColor do
contentView
para o seuUITableViewHeaderFooterView
:Então vai funcionar.
fonte
Para mim, tentei tudo o que foi descrito acima, mas ainda recebia o aviso "A configuração da cor de plano de fundo no UITableViewHeaderFooterView foi preterida. Por favor, use contentView.backgroundColor." tentei o seguinte: no arquivo xib, a cor de plano de fundo para a visualização do cabeçalho foi selecionada para limpar a cor em vez do padrão. Depois que a mudei para o padrão, o aviso foi embora.
fonte
Para uma cor clara, eu uso
Parece bom para mim.
fonte
backgroundView = UIView()
e depoisbackgroundColor = .clear
foi a única solução de trabalho. Obrigado.Para cores sólidas de fundo, definir o
contentView.backgroundColor
deve ser suficiente:Para cores com transparência, incluindo
.clear
cores, isso não funciona mais:Para um cabeçalho de seção transparente completo, configure a
backgroundView
propriedade para uma visualização vazia:No entanto, cuidado com os possíveis efeitos colaterais. A menos que a exibição da tabela esteja definida como "Agrupado", os cabeçalhos das seções serão ajustados na parte superior ao rolar para baixo. Se os cabeçalhos da seção forem transparentes, o conteúdo da célula será visualizado, o que pode não parecer ótimo.
Aqui, os cabeçalhos das seções têm um plano de fundo transparente:
Para evitar isso, é melhor definir o plano de fundo do cabeçalho da seção para uma cor sólida (ou gradiente) que corresponda ao plano de fundo da visualização da tabela ou do controlador de visualização.
Aqui, os cabeçalhos das seções têm um fundo gradiente totalmente opaco:
fonte
No criador de interface, puxe seu .xib, no elemento superior, no inspetor de atributos, defina a cor do plano de fundo como padrão. Em seguida, vá para a exibição de conteúdo e defina a cor do plano de fundo (consulte https://github.com/jiecao-fm/SwiftTheme/issues/24 ).
fonte
No iOS9
headerView.backgroundView.backgroundColor
funcionou para mim:No iOS8, eu estava usando
headerView.contentView.backgroundColor
sem problemas, mas agora com o iOS 9, eu estava tendo um problema estranho que fazia a cor do plano de fundo não preencher todo o espaço da célula. Então, tentei apenasheaderView.backgroundColor
e recebi o mesmo erro do OP.Então agora tudo funciona muito bem e sem avisos usando
headerView.backgroundView.backgroundColor
fonte
se você criou uma subclasse personalizada de
UITableViewHeaderFooterView
withxib
file, você deve substituirsetBackgroundColor
. Mantenha-o vazio.E isso vai resolver o seu problema.
fonte
Se você estiver personalizando uma célula de cabeçalho de seção com Storyboard / Nib , verifique se a cor de fundo é o padrão para a visualização "Cabeçalho de seção de tabela".
E se você subclasse
UITableViewHeaderFooterView
e usando a ponta, o que você precisa fazer é criar umIBOutlet
para a exibição de conteúdo e nomeá-la, por exemplo.containerView
. Isso não deve ser confundido comcontentView
, que é o pai dessa exibição de contêiner.Com essa configuração, você altera a cor do plano de fundo
containerView
.fonte
Eu tentei com a aparênciaWhenContainedIn chain, e funcionou para mim.
fonte
talvez porque o backgroundView não exista
isso funciona para mim.
fonte
iOS 12, Swift 5. Se você deseja (ou está tentando!) usar um proxy de aparência, a seguinte solução funciona:
ou
fonte
Esqueça as dificuldades.
Adicione ao seu projeto
UITableViewHeaderFooterView+BGUpdate.swift
com o código abaixo:O uso é simples como você esperava antes:
Exemplos de uso :
1) Nos delegados
tableView:viewForHeaderInSection:
:ou
2) Na sua classe de visualização de cabeçalho personalizada:
fonte
Definir o BackgroundView com cores claras funciona bem para cabeçalhos visíveis. Se a tabela for rolada para mostrar os cabeçalhos na parte inferior, esta solução falhará.
A tabela PSMy consiste apenas em cabeçalhos sem células.
fonte
Rápido:
fonte
Crie o UIView e defina a cor do plano de fundo e defina-o como self.backgroundView.
fonte
Sinto-me compelido a compartilhar minha experiência. Eu tinha esse pedaço de código que funcionava bem no iOS 10 e iOS 11
headerView?.contentView.backgroundColor = .lightGray
De repente, decidi implantar o aplicativo para iOS 9, pois existem alguns dispositivos (iPad mini, uma geração mais antiga não atualiza para nenhum sistema operacional além de 9) - A única solução que funcionou para todos os iOS 9, 10 e 11 foi definir uma vista de base para o cabeçalho que contém todas as outras subvisões de cabeçalho, conectá-la a partir do storyboard e definir a
backgroundColor
vista de base.Você deve estar atento ao conectar a tomada para não ligar:
backgroundView
como já existe uma propriedade com esse nome em algunssuperclass
. Eu chamei meucontainingView
Além disso, ao conectar o controle da tomada, clique na visualização
Document Outline
para garantir que ele não esteja conectadofile owner
fonte
fonte