J'ai un UITableView
où les séparateurs n'ont pas la pleine largeur. Il se termine comme 10 pixels avant le côté gauche. Je jouais avec ce code dans le viewDidLoad()
.
self.tableView.layoutMargins = UIEdgeInsetsZero;
Également dans le storyboard lorsque vous pouvez sélectionner des sélecteurs personnalisés ou par défaut. Désormais, toutes les cellules remplies ne disposent pas des sélecteurs pleine largeur, mais les cellules vides ont la pleine largeur.
Comment puis-je réparer cela?
ios
objective-c
iphone
uitableview
Timo Cengiz
la source
la source
UITableView
a une propriétéseparatorInset
. Réglez l'encart duUITableView
séparateur de ligne sur zéro. Vous pouvez également changer le àseparatorInset
partir du storyboardRéponses:
Cela a fonctionné pour moi sur les appareils iOS 8.4 - 9.0 utilisant Xcode 6.4 et Swift 1.2:
Mise à jour de Swift 5:
la source
J'ai eu la réponse de ce post: le séparateur UITableView d'iOS 8 0 ne fonctionne pas
Ajoutez simplement ce code sur votre
UITableViewController
la source
viewDidLayoutSubviews
n'est pas nécessaireDans votre
UITableViewCell
Accédez à l'inspecteur d'attributs dans votre générateur d'interface et remplacez simplement "15" par 0. Faites cela pour toutes les cellules que vous souhaitez modifier.
Vous devrez peut-être ajouter
[cell setLayoutMargins:UIEdgeInsetsZero];
à votretableViewCell
la source
pour Swift 3:
la source
UITableViewCell
left
et / ouright
champs. (Par défautleft: 15
,right: 0
)Regardez comment cela fonctionne (en utilisant
left: 100
):Résultat:
la source
UITableViewController
J'hérite et j'avais besoin de plus des paramètres des deux inserts pour définirwillDisplayCell
égalementpreservesSuperviewLayoutMargins
sur false. Dans Swift, cela ressemble à ceci:la source
preservesSuperviewLayoutMargins = false
car la valeur par défaut est déjà fausseLe séparateur
Inset
est par défaut 15 à gauche. Modifiez l'Inset
option Séparateur deauto
àcustom
et définissez l'encart sur0
.la source
Pour Swift dans iOS 9+
Si vous utilisez un personnalisé
UITableViewCell
:alors pour votre
UITableView
enviewDidLoad
:la source
Pour les personnes ayant des problèmes avec l'iPad, cela vous mettra dans un état identique à celui de l'iPhone. Vous pouvez ensuite ajuster le
separatorInset
au besoin.la source
Utilisez-le dans la
cellForRowAtIndexPath
méthode, pour configurer les spécifications du séparateur de cellule,cela fonctionne parfaitement pour iOS9.0 +
la source
Testé pour iOS 9.3 et Swift 2.2. Assurez-vous de mettre le code dans
willDisplayCell
lequel est appelé juste avant d'afficher la cellule et non à l'cellForRowAtIndexPath
endroit où vous créez la cellule uniquement.Ajouter
override
à la fonction pourUITableViewController
, comme ceci:la source
Rien de ce qui précède n'a fonctionné pour moi dans Swift 2.2 et Xcode 7.3.1
S'est avéré être la solution la plus simple de toutes. Aucun code nécessaire. Modifiez simplement les
TableViewCell
valeurs des marges de mise en page dans votreUITableView
inspecteur:la source
Pour Swift 3:
la source
Dans
viewDidLoad
(testé iOS11 - swift 4.1)essayer
tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
la source
Aucune de ces solutions ne fonctionne sur l'iPad, mais j'ai trouvé une solution qui couvre les deux appareils:
Avec cellules réutilisables:
Avec des cellules non réutilisables:
Juste pour développer cette approche:
Les deux propriétés peuvent être utilisées par
UITableView
&UITableViewCell
. Ce dernier est, en fait, une propriété deUIView
, qui est une classe parente des deuxUITableView
&UITableViewCell
.la source
swift 5, mise à jour Xcode 11
placez cette vue à l'intérieur de viewDidLoad ()
pour le séparateur bord à bord, définissez simplement la valeur de gauche et de droite sur 0.
en passant, changez le "yourTableView" en votre nom de sortie tableView.
la source