Рядок розділювача UITableView


78

Як я можу змінити рядок-роздільник, який з’являється в кінці кожної комірки в UITableView? Я хочу мати зображення, яке являє собою тонкий роздільник типу лінії.

Відповіді:


93

Встановіть separatorStyleдля перегляду таблиці значення UITableViewCellSeparatorStyleNone. Додайте зображення-роздільник як підпрогляд до кожної комірки та встановіть правильно кадр.


1
Ви, пожалуйста, дайте мені приклад.
Мобільний розробник iOS Android

[separatorImageView setFrame: CGRectMake (0, 0, cell.frame.size.width, separatorImageView.image.size.height)];
Фелікс

[cell.imageView setFrame: CGRectMake (0, 0, cell.frame.size.width, cell.frame.size.height)]; не зміг цього зробити :(
cV2

А як щодо тих, які малює звичайний UITableView, коли комірки не заповнюють екран?
Крістіан Шнорр,

4
Сумно, що ця відповідь все-таки є найкращою через помилки розділових рядків.
eonil

62

Спробуйте це

Завдання С

  [TableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];

  [TableView setSeparatorColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Divider_line@2x.png"]]];

Стрімкий

    tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine
    tableView.separatorColor = UIColor(patternImage: UIImage(named: "YOUR_IMAGE_NAME")!)

1
Чудова відповідь Дякую!
Septronic

Дякую @ Sakshi - я встановив колір роздільника замість зображення, і він теж чудово виглядає. table.separatorStyle = UITableViewCellSeparatorStyle.SingleLine table.separatorColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0)
fs_tigre

29

Спочатку ви можете написати код:

{    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];}

після того

{    #define cellHeight 80 // You can change according to your req.<br>
     #define cellWidth 320 // You can change according to your req.<br>

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath
    {
         UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"seprater_line.png"]];
        imgView.frame = CGRectMake(0, cellHeight, cellWidth, 1);
        [customCell.contentView addSubview:imgView];
         return  customCell;

     }
}

3
Проблема таких рішень, які просто додають підпрогляд до клітинки, tableView:cellForRowAtIndexPath:полягає в тому, що вони додаватимуть новий кожен раз, коли клітинку буде використано повторно, ніколи не видаляючи старих. Його слід додати лише один раз, тож ви робите це в UITableViewCellпідкласі.
Гевін

7

Встановіть колір роздільника для малювання з малюнком.

у viewDidLoad:

self.tableView.separatorColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"mySeparatorImage"]];

5

Мій проект базується на iOS 7 Це мені допомагає

[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

Потім помістіть підпрогляд у клітинку як роздільник!


1
Це не відповідає на питання.
King-Wizard

4

Спробуйте це:

UIImageView *separator = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"separator.png"]];
[cell.contentView addSubview: separator];

Це приклад того, як я змусив це працювати досить добре.

Не забудьте встановити для стилю роздільника для подання таблиці значення немає.


4

Ви можете додати UIImageView, який має, наприклад, висоту 1 бал і ширину кадру комірки, а потім встановити його початок у нижньому лівому куті комірки.


6
Не забудьте вимкнути стиль роздільника за замовчуванням для подання таблиці:[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
Jasarien

можеш дати мені приблизний код, щоб я міг почати, як я можу встановити його початок у нижньому лівому куті комірки?
Мобільний розробник iOS Android

4

Ось спосіб зробити це за допомогою розкадрування в XCode 10.2.1. За замовчуванням роздільник default- це рядок. Встановіть noneдля видалення рядка.

tableview_separator


2

Це, безумовно, допомога. Працює. але встановіть роздільник "none" від інспектора атрибутів. Запишіть наступний код у метод cellForRowAtIndexPath

 UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0,           
 cell.contentView.frame.size.height - 1.0,      
 cell.contentView.frame.size.width, 1)];

    lineView.backgroundColor = [UIColor blackColor];
    [cell.contentView addSubview:lineView];

Я спробував це навіть з, [cell.contentView bringSubviewToFront:lineView];і це в основному не відображається, крім крайньої правої та лівої сторін.
Тімоті Суон

2

Стрім 3/4

Спеціальний розділовий рядок, помістіть цей код у спеціальну комірку, яка є підкласом UITableViewCell (або в CellForRow або WillDisplay TableViewDelegates для нестандартної комірки):

let separatorLine = UIView.init(frame: CGRect(x: 8, y: 64, width: cell.frame.width - 16, height: 2))
separatorLine.backgroundColor = .blue
addSubview(separatorLine)

in viewDidLoad метод:

tableView.separatorStyle = .none

0

У вас є 2 варіанти змінити стиль роздільника uitableview, якщо ви хочете змінити параметри за замовчуванням, які не містять роздільників, суцільної лінії або травленої лінії.

  1. Найпростіший полягає у включенні фонового зображення роздільника до кожного виду клітинки. Тоді ви можете перевірити, де знаходиться ваша клітинка в поданні таблиці, щоб застосувати правильне фонове зображення, яке надасть вам роздільну лінію зверху комірки або внизу комірки.

    Встановіть для стилю роздільника значення none у viewDidLoad вашого перегляду таблиці:

    [self.tableView setSeparatorStyle: UITableViewCellSeparatorStyleNone];

    Встановіть фонове зображення у функції (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath

     UIImage* yourBgImg = [[UIImage imageNamed:@"bgImage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
    

    cell.backgroundView = [[UIImageView alloc] initWithImage: yourBgImg];

    перевірте розташування своєї комірки в розділі наступним чином:

    NSInteger sectionRows = [tableView numberOfRowsInSection: [indexPathsection]]; NSInteger рядок = [рядок indexPath];

  2. Додайте роздільну лінію як комірку. Я нещодавно знайшов допис для цього тут: http://www.dimzzy.com/blog/2012/01/separator-cells-for-uitableview/#disqus_thread

0

Ви можете спробувати нижче:

UIView *separator = [[UIView alloc] initWithFrame:CGRectMake(0, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width, 1)];
separator.backgroundColor = myColor;
[cell.contentView addSubview:separator];

або

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"separator.png"]];
   imageView.frame = CGRectMake(0, 100, 320, 1);
   [customCell.contentView addSubview:imageView];

   return customCell;
}

0

Ось альтернативний спосіб додати нестандартний роздільник до a UITableView, зробивши aCALayer для зображення та використовуючи це як роздільну лінію.

// робимо CALayer для зображення для роздільника

CALayer *separator = [CALayer layer];
separator.contents = (id)[UIImage imageNamed:@"myImage.png"].CGImage;
separator.frame = CGRectMake(0, 54, self.view.frame.size.width, 2);
[cell.layer addSublayer:separator];

0

Найпростіший спосіб додати роздільник під кожну комірку табличного подання можна зробити в самій розкадровці. Спочатку виберіть табличний перегляд, а потім в інспекторі атрибутів виберіть властивість розділювального рядка, щоб бути одним рядком. Після цього виберіть вставку роздільника, щоб вона була спеціальною, та оновіть ліву вставку, щоб вона становила 0 зліва.

Приклад

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.