J'essaye de changer la couleur d'arrière-plan de UITableViewHeaderFooterView. Bien que la vue apparaisse, la couleur d'arrière-plan reste la couleur par défaut. Je reçois un journal de xcode disant:
La définition de la couleur d'arrière-plan sur UITableViewHeaderFooterView est obsolète. Veuillez utiliser contentView.backgroundColor à la place.
Cependant, aucune des options suivantes ne fonctionne:
myTableViewHeaderFooterView.contentView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundColor = [UIColor blackColor];
J'ai également essayé de changer la couleur d'arrière-plan de la vue dans le fichier xib.
Aucune suggestion? Merci.
iphone
ios
xcode
uitableview
Chun
la source
la source
Réponses:
Vous devez soit utiliser myTableViewHeaderFooterView.tintColor, soit affecter une vue d'arrière-plan personnalisée à myTableViewHeaderFooterView.backgroundView.
la source
tintColor
ne travaille pas sur iOS7. Je ne pourrais changer de couleur qu'enmyTableViewHeaderFooterView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
iOS 8, 9, 10, 11 ...
La seule façon de définir une couleur (avec n'importe quel alpha) est d'utiliser
backgroundView
:Rapide
Obj-C
Réponses aux commentaires
Aucune de ces autres options ne fonctionne de manière fiable (malgré les commentaires ci-dessous)
le
backgroundView
est redimensionné automatiquement. (Pas besoin d'ajouter des contraintes)Contrôle alpha avec
UIColor(white: 0.5, alpha: 0.5)
oubackgroundView.alpha = 0.5
.(bien sûr, n'importe quelle couleur fera l'affaire)
Lorsque vous utilisez XIB , faites de la vue racine
UITableViewHeaderFooterView
et associez-la parbackgroundView
programme:Inscrivez-vous avec:
Chargez avec:
↻ relire l'animation
► Trouvez cette solution sur GitHub et des détails supplémentaires sur les recettes Swift .
la source
view.BackgroundView = new UIView(view.Bounds) { BackgroundColor = UIColor.Clear };
Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.
Dans iOS 7 a
contentView.backgroundColor
fonctionné pour moi,tintColor
n'a pas.Bien que
clearColor
cela ne fonctionne pas pour moi, la solution que j'ai trouvée est de définir labackgroundView
propriété sur l'image transparente. Peut-être que cela aidera quelqu'un:la source
Assurez-vous de définir la couleur backgroundColor de
contentView
pour votreUITableViewHeaderFooterView
:Ensuite, cela fonctionnera.
la source
Pour moi, j'ai essayé tout ce qui est indiqué ci-dessus, mais je recevais toujours l'avertissement "La définition de la couleur d'arrière-plan sur UITableViewHeaderFooterView est obsolète. Veuillez utiliser contentView.backgroundColor à la place." puis j'ai essayé ceci: dans le fichier xib, la couleur d'arrière-plan de la vue d'en-tête a été sélectionnée pour effacer la couleur au lieu de la valeur par défaut une fois que je l'ai changée par défaut, l'avertissement a disparu.
la source
Pour une couleur claire, j'utilise
Cela me semble bien.
la source
backgroundView = UIView()
etbackgroundColor = .clear
était alors la seule solution de travail. Je vous remercie.Pour les couleurs d'arrière-plan unies, le réglage
contentView.backgroundColor
devrait suffire:Pour les couleurs avec transparence, y compris la
.clear
couleur, cela ne fonctionne plus:Pour un en-tête de section entièrement transparent, définissez la
backgroundView
propriété sur une vue vide:Cependant, méfiez-vous des effets secondaires possibles. À moins que la vue du tableau ne soit définie sur «Groupé», les en-têtes de section s'aligneront en haut lors du défilement vers le bas. Si les en-têtes de section sont transparents, le contenu de la cellule sera visible à travers, ce qui peut ne pas avoir l'air parfait.
Ici, les en-têtes de section ont un arrière-plan transparent:
Pour éviter cela, il est préférable de définir l'arrière-plan de l'en-tête de section sur une couleur unie (ou un dégradé) correspondant à l'arrière-plan de votre vue de tableau ou de votre contrôleur de vue.
Ici, les en-têtes de section ont un arrière-plan dégradé entièrement opaque:
la source
Dans le générateur d'interface, tirez votre .xib, sur l'élément supérieur, dans l'inspecteur d'attributs, définissez la couleur d'arrière-plan par défaut. Ensuite, allez dans la vue de contenu et définissez la couleur d'arrière-plan (référence à https://github.com/jiecao-fm/SwiftTheme/issues/24 ).
la source
Sur iOS9 a
headerView.backgroundView.backgroundColor
fonctionné pour moi:Sur iOS8, j'utilisais
headerView.contentView.backgroundColor
sans problème, mais maintenant avec iOS 9, j'obtenais un problème étrange qui empêchait la couleur d'arrière-plan de remplir tout l'espace de la cellule. J'ai donc essayé justeheaderView.backgroundColor
et j'ai eu la même erreur de l'OP.Alors maintenant, tout fonctionne très bien et sans avertissement en utilisant
headerView.backgroundView.backgroundColor
la source
si vous avez créé une sous-classe personnalisée de
UITableViewHeaderFooterView
withxib
file, vous devez remplacersetBackgroundColor
. Gardez-le vide.Et cela résoudra votre problème.
la source
Si vous personnalisez une cellule d'en-tête de section avec Storyboard / Nib , assurez-vous que la couleur d'arrière-plan est par défaut pour la vue «En-tête de section de tableau».
Et si vous sous
UITableViewHeaderFooterView
- classez , et en utilisant nib, alors ce que vous devez faire est de créer unIBOutlet
pour la vue de contenu, et de le nommer par exemple.containerView
. Il ne faut pas confondre cela aveccontentView
, qui est le parent de cette vue de conteneur.Avec cette configuration, vous modifiez la couleur d'arrière-plan de
containerView
.la source
J'ai essayé avec la chaîne aspectWhenContainedIn, et cela a fonctionné pour moi.
la source
peut-être parce que le backgroundView n'existe pas
cela fonctionne pour moi.
la source
iOS 12, Swift 5. Si vous souhaitez (ou essayez!) d'utiliser un proxy d'apparence, la solution suivante fonctionne:
ou
la source
Oubliez les difficultés.
Ajoutez à votre projet
UITableViewHeaderFooterView+BGUpdate.swift
avec le code ci-dessous:L'utilisation est simple comme vous vous y attendiez auparavant:
Exemples d'utilisation :
1) Chez les délégués
tableView:viewForHeaderInSection:
:ou
2) Dans votre classe de vue d'en-tête personnalisée:
la source
La définition de BackgroundView avec une couleur claire fonctionne bien pour les en-têtes visibles. Si le tableau défile pour afficher les en-têtes en bas, cette solution échoue.
PSMy tableau se compose uniquement d'en-têtes sans aucune cellule.
la source
Rapide:
la source
Créez UIView et définissez la couleur d'arrière-plan, puis définissez-le sur self.backgroundView.
la source
Je me sens obligé de partager mon expérience. J'avais ce morceau de code qui fonctionnait bien avec iOS 10 et iOS 11
headerView?.contentView.backgroundColor = .lightGray
Puis j'ai soudainement décidé de déployer l'application pour iOS 9 car il y a des appareils (iPad mini d'une certaine génération plus ancienne ne se met à jour vers aucun système d'exploitation au-delà de 9) - La seule solution qui a fonctionné pour tous les iOS 9, 10 et 11 était de définir une vue de base pour l'en-tête qui contient ensuite toutes les autres sous-vues d'en-tête, de la relier à partir du storyboard et de définir la
backgroundColor
vue de base de cette vue.Vous voudrez faire attention lors du câblage de la prise de ne pas l'appeler:
backgroundView
car il y a déjà une propriété avec ce nom dans certainssuperclass
. J'ai appelé le miencontainingView
Lors du câblage de la commande de sortie, cliquez également sur la vue
Document Outline
pour vous assurer qu'elle n'est pas câbléefile owner
la source
la source