2014-12-10 1 views
1

Я последовал за этот пост: How to customize tableView separator in iPhoneКак настроить UITableView разделителя, когда клетки получили пользовательскую высоту

Проблема заключается в том, что она не работает хорошо, когда у меня есть пользовательская высота для моей камеры.

Я покажу вам два изображения, одно с двумя строками - результат создания пользовательской высоты для моих ячеек.

enter image description here

С пользовательской высоты: enter image description here

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width, 1)]; 

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

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 50; 
} 
+0

Является ли пользовательская высота только для одной ячейки или всех ячеек? – soulshined

+0

У вас есть пользовательская ячейка? В печке? Проблема в том, что ячейка расширяется после того, как вы установили свой lineView. Если вы хотите, чтобы он придерживался дна, вы можете проверить autoresizingMask или настроить ограничения автозапуска – streem

ответ

1

Привет проблема в методах cellForRowAtIndexPath вы клетка не знает его высоту еще. Если вы используете пользовательскую высоту (вы знаете эту высоту, используйте ее также в cellForRow ...).

Вот пример:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 49.0, cell.contentView.frame.size.width, 1)]; 

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

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
return 50; 
} 

Кроме того, не забывайте вы можете использовать separatorStyle и separatorInset, для того, чтобы обычай Лил эту линию. Если вы его не используете, не ставьте ни одного:

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
+0

Это выглядит многообещающим, я буду тестировать его, когда вернусь в офис, спасибо! – Johannes

+1

Ответ Onik прав, только одно - лучше, если вы не настроили макет жесткого кода, но переопределите функцию UITableViewCell layoutSubviews и поместите туда что-то вроде 'self.lineView.frame = CGRectMake (0, self.frame.size.height - 1, self .frame.size.width, 1); ' –

Смежные вопросы