Як зазначають (багато) інші, ви можете легко приховати всі роздільники UITableViewCell, просто відключивши їх для всього UITableView; наприклад, у вашому UITableViewController
- (void)viewDidLoad {
...
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
...
}
На жаль, це справжнє ПДФА, яке потрібно робити на клітку , про що ви справді просите.
Особисто я спробував численні перестановки щодо зміни cell.separatorInset.left
, знову ж таки, як (багато) інших запропонували, але проблема полягає в тому, щоб процитувати Apple (наголос додано):
" ... Ви можете використовувати цю властивість, щоб додати простір між вмістом поточної комірки та лівим і правим краями таблиці. Позитивні значення вставки переміщують вміст комірки та роздільник комірок всередину та в сторону від країв таблиці ... "
Тож якщо ви спробуєте "сховати" роздільник, підсунувши його поза екраном праворуч, ви також можете вступити відступ вмісту вашої клітини також. За пропозицією crifan, ви можете спробувати компенсувати цей неприємний побічний ефект, встановивши cell.indentationWidth
іcell.indentationLevel
відповідним чином перемістити все назад, але я вважав, що це також ненадійно (вміст все ще стає відступним ...).
Найнадійніший спосіб, який я знайшов, - layoutSubviews
це перевертати простий підклас UITableViewCell і встановити правильний вклад так, щоб він потрапляв на ліву вставку, завдяки чому роздільник має ширину 0 і так невидимий [це потрібно робити в layoutSubviews для автоматичного обробляти обертання]. Я також додаю метод зручності до свого підкласу, щоб увімкнути це.
@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
Caveat: не існує надійного способу відновлення початкового правильного вставки, тому ви не можете "приховати" роздільник, тому я використовую незворотний hideSeparator
метод (проти викриття separatorIsHidden). Зверніть увагу, що separatorInset зберігається в повторно використаних клітинках, тому, оскільки ви не можете "зняти приховування", вам потрібно тримати ці приховані сепараторні осередки в їх власному повторному ідентифікаторі повторного використання.