Regroupés UITableview supprimer externe de la ligne de séparation
J'ai un groupés UITableview qui est créé par programmation. J'ai également une cellule avec xib fichier peuplées de la tableview par programme ainsi. So far So good. Mais je veux seulement supprimer externe de la ligne de séparation. J'ai utilisé le code ci-dessous mais cette fois supprimé tous séparateur de ligne.
auto.tableView.separatorColor = [UIColor clearColor];
ce n'est pas une bonne option pour ma situation. Voici la capture d'écran de ce que je veux faire;
- Option: suppression de tous les séparateurs par défaut et ajouter
UIView
s dans la cellule comme faux séparateurs. J'espère qu'il y est une meilleure option. - C'est la même démarche ci-dessus. Comme je l'ai dit avant que je ne retirez extérieur en haut et en bas de ligne pas ligne intérieure. Si je supprime tous séparateur dans tableview et ajoute une nouvelle ligne dans la cellule personnalisé tableview l'apparence toujours le même.
- La Solution est d'utiliser TableView comme
Plain tableview
, ne sont pas Regroupés. Dans Regroupées il met séparateurs sur les en-têtes et pieds de page. - votre solution fonctionne, merci :), mais de la plaine tableview montre encore séparateur même si elle n'a rien.
- haha je viens de trouver la solution pour arrêter l'affichage de séparateur de lignes de plaine tableview. stackoverflow.com/a/10771747
- Est que votre sérieux, @iphonic?! Qui doit-il m'aider? li2? Quand quelqu'un utilise un groupés tableView il y a probablement une bonne raison pour cela. Avez-vous jamais voir que les séparateurs ne sont pas la seule différence entre le regroupement et la plaine tableView?
- est droit! Une meilleure option serait d'utiliser des UITableviewcell.
Vous devez vous connecter pour publier un commentaire.
J'ai juste travaillé sur une solution, car la cellule a
contentView
qui est unUIView
, donc je pense que vous pouvez vous concentrer uniquement sur la ligne de fond decontentView
.Voici mon code:
tout d'abord, vous devez faire le séparateur pour effacer
Deuxième, dans le
cellForRowAt
fonction:ici, vous verrez l'INTERFACE utilisateur comme ceci:
Voici ma solution:
Après l'inspection de la vue de la hiérarchie, il semble que chaque UITableViewCell a seulement trois sous-vues: la vue de contenu (
UITableViewCellContentView
), et deux séparateur de vues (_UITableViewCellSeparatorView
). Je ne suis pas un fan de la dynamique de l'instanciation de classe de NSStrings (et il n'est ni Apple ). Cependant, parce que lacontentView
d'unUITableViewCell
est accessible sans l'aide d'Api privées, la solution s'avère être assez facile.L'idée est juste de parcourir les sous-vues de votre
UITableViewCell
, et de supprimer toutes les vues qui ne sont pas lescontentView
:tableView(:willDisplayCell:forRowAtIndexPath:)
est appelé plusieurs fois au cours de la table le rendu de l'affichage, de sorte que la garde la trace de l'état en vérifiant combien de sous-vues de la cellule. Si elle dispose de trois sous-vues, les deux séparateurs sont encore intacts. De plus, cela ne supprime l'un des séparateurs, mais vous pouvez supprimer les deux en retirant lebreak
. Vous pouvez également spécifier si vous souhaitez supprimer le haut de séparation ou de la partie inférieure du séparateur en cochant la sous-vue de l'image. Si le cadre de l'axe y de l'origine est0
, c'est le premier séparateur. Si ce n'est pas0
, c'est le fond.Espérons que cette aide!
Swift 4, Swift 4.2 Mise À Jour:
NSStringFromClass
et de comparer ces valeurs à l'encontre de"_UITableViewCellSeparatorView"
et"UITableViewCellContentView"
puis retirez-le.#available
attribut dont le corps est vide pour n'importe quelle version d'iOS plus que la version actuelle.Vous pouvez supprimer des séparateurs, même dans les regroupées UITableView avec Statique de la Cellule:
Google, même en 2018, est au service de cette page le top résultat de cette question. Je n'ai pas eu de chance dans iOS 11 avec les réponses, voici ce que je suis venu avec:
Appel .removeSectionSeparators() sur une UITableViewCell instance va maintenant prendre en charge le problème. Dans mon cas au moins, la section des séparateurs sont les seuls à avoir la même largeur que la cellule elle-même (comme les autres sont tous en retrait).
La seule question est de là que nous devrions l'appeler. Vous pensez willDisplayCell serait le meilleur choix, mais j'ai découvert que l'appel initial se produit avant que le séparateur de vues elles-mêmes sont générés, donc pas de dés.
J'ai fini par mettre cela dans mon cellForRowAtIndexPath méthode juste avant de me remettre un reloaded cellule:
Il n'a pas l'impression qu'élégant, mais je n'ai pas rencontré de problèmes encore.
EDIT: Ressemble, nous avons besoin de cette trop (pour réutilisés cellules):
Voici un avant/après dans les captures d'écran avec ce code:
Avant
Après
C'est une très vieille question, c'est toujours l'une des premières entrées sur google lors de la recherche pour comment faire pour supprimer le haut et le bas des séparateurs pour chaque section.
Après quelques recherches, j'ai découvert qu'il n'existe aucun moyen et juste pas l'intention d'Apple de faire ce en quelque sorte se faire sans bêtement compliqué hacks de la vue de la hiérarchie.
Heureusement, il est absolument simple et facile de réalisation d'un tel look:
Je dis simple, mais pour un débutant, cela peut être difficile en raison d'un manque de compréhension de la façon dont
UITableView
fonctionne et comment mettre en œuvre vos propres cellules. Permettez-moi d'essayer de l'expliquer:UITableViewCell
sous-classe@IBOutlet weak var separatorView: UIView!
propriétéUITableView
sSeparator Style
àNone
pour masquer le séparateur par défautUIView
sur votre cellulaire et la redimensionner il est sur le bas (ou en haut) de la cellule. Utiliser leSize Inspector
sAutoresizing
pour l'épingler en début/fin/bas et lui donner un flex de la largeur (ou la mise en page automatique, mais c'est un peu plus haut dans ce cas)UITableViewDataSource
scellForRowAtIndexPath:
définir laisHidden
propriété de votre séparateur personnalisé en fonction de si laindexPath.row
est la dernière ligne (ou la première, si votre vue est en haut) dans la sectionHeres un exemple de code:
Et voici quelques captures d'écran:
Oui, c'est du travail mais il n'y a simplement aucun moyen de quelque chose de gratuit lors du codage. En fin de compte, nous sommes des programmeurs et c'est à nous de faire le codage. Il est toujours préférable de passer les 5 à 10 minutes, cette mise en place que de simplement copier-coller certains hacky code qui ne pourraient pas continuer à travailler dans le futur quand Apple décide de changer la vue de la hiérarchie.
Il était en fait plus de travail pour écrire cette réponse que la mise en œuvre de la séparation. J'ai ainsi était à la recherche d'un moyen facile et rapide de la solution, mais à la fin, il n'était tout simplement pas une assez bonne qui me semblait utile d'utiliser.
J'espère que vous aussi vous vous sentez sceptique quand vous voyez par-boucles d'itération sur les sous-vues de cellules de cacher ou même de supprimer des points de vue au moment de l'exécution à partir de la vue de la hiérarchie d'Apple vous permet, quand il est un outil facile, polyvalent, stable et d'avenir solution juste autour du coin. 7 petits pas est vraiment tout ce dont vous avez besoin et ils sont faciles à comprendre.
C'est ce que j'ai finalement venu avec:
Je n'étais pas en mesure de trouver une meilleure façon de faire que cela. Mais c'est de travailler pour moi énormément. Dernière essayé avec Xcode Version 7.3.1 (7D1014). Cette procédure a été effectuée par le biais de storyboard.
Fondamentalement, je suis d'ajouter une UIView de 0,5 pt Hauteur sur le UITableViewCell puis définir une couleur d'arrière-plan pour que UIView. Set parent UITableView du Séparateur qu'Aucun.
Voici les détails:
En considérant que vous avez déjà mis votre UITableViewCell, de la coutume ou par défaut. Dans la première étape définir la UITableView du séparateur qu'Aucun.
Ajoutez ensuite une UIView de 1 pt de la Hauteur et de définir l'arrière-plan que vous en avez besoin, sur mon cas, il est Rouge.
Commencer à fixer des contraintes. Le problème est de définir la hauteur de la UIView 0,5 pt. C'est le seul problème pour ce flux de travail.
UIView avec 0,5 pt Hauteur:
Partage la manière de définir 0,5 pt hauteur de la UIView.
Première(1) broche de la vue, puis(2) régler la hauteur de 0,5. Appuyez Sur Entrée.
Enfin votre UIView ressemble comme suit.
Je n'étais pas en mesure de régler la hauteur de 0,5 autres que de cette façon.
Ici la solution. C'est pour les cellules statiques. Si vous voulez dynamique puis il suffit de réécrire "le comte". Espérons que cela aide.
Essayé différentes solutions basées sur le
cell.separatorInset = UIEdgeInsetsMake()
solution de contournement, aucun d'entre eux fonctionnent correctement.Pour mon iOS11
UITableViewStyleGrouped
de projet basée sur, cela il l'a fait:Basé sur cook réponse, mais sans minuteur:
Il suffit d'ajouter ce dans une cellule du sous-classe, et vous n'avez pas besoin de rien d'autre. Fonctionne sur iOS 12.
Pour enlever la partie supérieure et inférieure de la ligne de séparation pour chaque section. Ajoutez ceci à votre cellulaire statique.
Résultat comme ci-dessous de l'image
J'ai eu un problème similaire, où j'ai eu un groupe de UITableView personnalisée avec des cellules, le tout conçu avec l'Interface de Construire .xib fichiers. Les cellules ont un fond blanc, enlever les séparateurs par défaut, et en ajoutant mes propres. J'ai également eu en-Tête personnalisé Vues pour chaque section. J'ai réglé la hauteur de ceux d'en-Tête de Vues à 44 (peut-être pour quelque chose...). Il y a un 1 hauteur du point de vue entre mes sections, qui semblait bizarre. Apparemment, le système ajoute clair en arrière-plan de la vue entre les sections, même si nous spécifier la hauteur personnalisée d'être, dire de 44, et la Vue d'en-Tête personnalisé, nous revenons a un blanc (ou de certains de béton couleur d'arrière-plan). La couleur que nous voyons derrière que la vision claire est la couleur de l'Affichage de la Table de l'arrière-plan en fait. Dans mon cas, à la fois les vues de table et les cellules devaient être de couleur blanche, et de définir l'arrière-plan de la vue de la table pour être blanc résolu le problème (au moins visuellement, mais c'est ce que je voulais de toute façon). La deuxième solution serait de garder le Tableau de la Vue du style que de la plaine, mais de mettre en place la UITableView délégué méthode pour retourner 2 ou plusieurs sections, et aussi de créer des en-têtes personnalisés si vous en avez besoin. Mais que fera-tête vues de bâton vers le haut pendant un certain temps (pendant le défilement), jusqu'à la prochaine section en-tête de la vue se rapproche d'elle, et puis elle commence à aller trop (et c'est peut-être pas ce que vous voulez vraiment, mais il y a peut être un moyen facile de corriger ça, pas sûr cependant).
Vous pouvez accéder à la vue à l'aide de
Essayez cela, retirez la partie supérieure du séparateur de ligne.
Voici une rapide solution qui fonctionne sur iOS 8 et 9.
Définir un protocole à un défaut de mise en œuvre:
Alors, partout où vous voulez l'utiliser, de les rendre conformes à la
CellSeparatorRemovable
protocole et appeler sa méthode de…willDisplayCell…
:C'est une solution minimale; vous pouvez avoir besoin de refactoriser le code si vous avez affaire à un grand nombre de cellules pour éviter les excès de la récursivité et/ou de cellules de réutilisation.