Diğerlerinin işaret ettiği gibi, tüm UITableViewCell ayırıcılarını tüm UITableView'ın kendisi için kapatarak kolayca gizleyebilirsiniz ; örneğin UITableViewController'ınızda
- (void)viewDidLoad {
...
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
...
}
Ne yazık ki, gerçekten sormak istediğiniz şey, hücre başına yapmak için gerçek bir PITA .
Şahsen, çok sayıda permütasyonu denedim. cell.separatorInset.left
başkalarının önerdiği gibi, tekrar , ancak sorun Apple'ı alıntılamak (vurgu eklendi):
" ... Bu özelliği, geçerli hücrenin içeriği ile tablonun sol ve sağ kenarları arasına boşluk eklemek için kullanabilirsiniz . Pozitif ek değerler , hücre içeriğini ve hücre ayırıcıyı tablo kenarlarından içe ve uzağa taşır ... "
Dolayısıyla, ayırıcıyı ekranın dışına doğru kaydırarak 'gizlemeye' çalışırsanız, hücrenizin contentView öğesini de girintili hale getirebilirsiniz. Crifan'ın önerdiği gibi, bu kötü yan etkiyi ayarlayarak cell.indentationWidth
vecell.indentationLevel
her şeyi geri taşıyabilir uygun şekilde geri taşıyabilirsiniz, ancak bunun da güvenilir olmadığını gördüm (içerik hala girintili hale geliyor ...).
Bulduğum en güvenilir yol, layoutSubviews
basit bir UITableViewCell alt sınıfında aşırı sürüş yapmak ve sağ iç kısmı sol iç metine çarpacak şekilde ayarlamak, ayırıcıyı 0 genişliğe ve çok görünmez hale getirmektir [bunun otomatik olarak yapılması gerekir döndürme tutamağı]. Bunu açmak için alt sınıfıma bir kolaylık yöntemi de ekliyorum.
@interface MyTableViewCellSubclass()
@property BOOL separatorIsHidden;
@end
@implementation MyTableViewCellSubclass
- (void)hideSeparator
{
_separatorIsHidden = YES;
}
- (void)layoutSubviews
{
[super layoutSubviews];
if (_separatorIsHidden) {
UIEdgeInsets inset = self.separatorInset;
inset.right = self.bounds.size.width - inset.left;
self.separatorInset = inset;
}
}
@end
Dikkat: Orijinal sağ eki geri yüklemek için güvenilir bir yol yoktur , bu nedenle ayırıcıyı 'gizleyemezsiniz', bu yüzden neden geri döndürülemez bir hideSeparator
yöntem kullanıyorum (separatorIsHidden açığa çıkarmaya karşı). Lütfen separatorInset öğesinin yeniden kullanılan hücreler arasında kaldığını unutmayın, bu nedenle 'gizlemeyi kaldıramazsınız', bu gizli ayırıcı hücreleri kendi yeniden kullanım tanımlayıcılarında yalıtılmış tutmanız gerekir.