Eu tenho um UITableView
onde os separadores não têm toda a largura. Termina 10 pixels antes do lado esquerdo. Eu estava brincando com esse código no viewDidLoad()
.
self.tableView.layoutMargins = UIEdgeInsetsZero;
Também no storyboard, quando você pode selecionar seletores personalizados ou padrão. Agora, todas as células preenchidas não possuem seletores de largura total, mas as células vazias têm largura total.
Como posso consertar isso?
ios
objective-c
iphone
uitableview
Timo Cengiz
fonte
fonte
UITableView
tem uma propriedadeseparatorInset
. Defina a inserção doUITableView
separador de linha como zero. Além disso, você pode alterar oseparatorInset
do storyboardRespostas:
Isso funcionou para mim nos dispositivos iOS 8.4 - 9.0 usando o Xcode 6.4 e o Swift 1.2:
Atualização do Swift 5:
fonte
Eu recebi a resposta deste post: iOS 8 UITableView separator inset 0 not working
Basta adicionar este código no seu
UITableViewController
fonte
viewDidLayoutSubviews
não é necessárioNa tua
UITableViewCell
Vá para o Attributes Inspector no Interface Builder e simplesmente altere "15" para 0. Faça isso para todas as células que deseja alterar.
Pode ser necessário adicionar
[cell setLayoutMargins:UIEdgeInsetsZero];
ao seutableViewCell
fonte
para Swift 3:
fonte
UITableViewCell
left
e / ouright
campos. (Por padrãoleft: 15
,right: 0
)Veja como funciona (usando
left: 100
):Resultado:
fonte
Eu herdo
UITableViewController
e necessário adicional às configurações de duas inserçõeswillDisplayCell
também para definirpreservesSuperviewLayoutMargins
como false. No Swift, fica assim:fonte
preservesSuperviewLayoutMargins = false
porque o valor padrão já é falsaO separador
Inset
é por padrão 15 da esquerda. Altere aInset
opção Separador deauto
paracustom
e defina a inserção como0
.fonte
Para Swift no iOS 9 ou superior
Se estiver usando um costume
UITableViewCell
:então para o seu
UITableView
emviewDidLoad
:fonte
Para pessoas com problemas com o iPad - isso o levará a um estado igual ao iPhone. Você pode ajustar o
separatorInset
conforme necessário.fonte
Use-o no
cellForRowAtIndexPath
método, para configurar as especificações do separador de célula,ele funciona perfeitamente para iOS9.0 +
fonte
Testado para iOS 9.3 e Swift 2.2. Certifique-se de inserir o código no
willDisplayCell
qual é chamado imediatamente antes de exibir a célula e nãocellForRowAtIndexPath
onde você cria apenas a célula.Adicione
override
à função paraUITableViewController
, da seguinte maneira:fonte
Nenhuma das opções acima funcionou para mim no Swift 2.2 e no Xcode 7.3.1
Acabou sendo a solução mais simples de todas. Nenhum código é necessário. Basta alterar os
TableViewCell
valores das margens do layout no seuUITableView
inspetor:fonte
Para o Swift 3:
fonte
No
viewDidLoad
(iOS11 testado - swift 4.1)experimentar
tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
fonte
Nenhuma dessas soluções funciona no iPad, mas eu criei uma solução que abrange os dois dispositivos:
Com células reutilizáveis:
Com células não reutilizáveis:
Apenas para expandir essa abordagem:
Ambas as propriedades podem ser usadas por
UITableView
&UITableViewCell
. Este último é, de fato, uma propriedade deUIView
, que é uma classe pai de ambosUITableView
&UITableViewCell
.fonte
swift 5, Xcode 11 Atualizar
coloque isso dentro de viewDidLoad ()
para separador de ponta a ponta, defina o valor de esquerda e direita como 0.
a propósito, altere "yourTableView" para o nome do seu tableView Outlet.
fonte