2015-04-02 2 views
1

Я создаю представление таблицы со статическими ячейками. Некоторым ячейкам нужен пользовательский стиль, потому что они содержат метку слева и текстовое поле справа.Выровнять пользовательский контент UITableViewCell с заголовком

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

Вот что в настоящее время выглядит мое приложение:

My App

Здесь IST, что выровненные этикетки в Основном стиле, как:

System Preferences

Я использую Auto Layout с Размер Классы и ограничения.

+0

Вы устанавливаете фрейм в cellForRowAtIndexPath? – Samir

+0

нет, должен ли я это сделать? –

+0

Я, наверное. Это не лучший способ его решить. Но как только я это сделал, так как не нашел решения. Также в режиме автовыброса не будет работать только установочный кадр, он может иногда не менять раму зрения. Попробуйте установить 'cell.titleLabel.translatesAutoresizingMaskIntoConstraints = YES; ' для просмотра, которое вы хотите изменить. Или же попробуйте найти его, используя автозапуск, если есть какой-либо способ? И скажите, если вы его нашли. :) – Samir

ответ

0

Спасибо вам за помощь, похоже, это была решена автоматически Xcode 6.3

+0

Я нашел еще одно хорошее сообщение об этой теме: http://coffee-coding.com/ios7-vs-ios8-margin-constraints-differ/ –

0

Я также столкнулся с аналогичной проблемой один раз.

Мое требование было,

1) Для того, чтобы создать TableView, который имеет заголовок и клетки.

2) Заголовок будет иметь 3 метки, под этими метками ячейка будет содержать соответствующие данные для соответствующих меток в заголовке.

Для достижения вышеуказанного требования я создавал свои метки в заголовке и на основе позиции и размера этикеток в заголовке я перерисовывал метки ячеек в соответствии с заголовками заголовков.

я реализовал вещь выше в методе делегата Tableview в - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

и станет ассоциироваться метками каждой ячейки на основе позиции заголовка и размера внутри него.

Например -

-(void) tableView:(UITableView *) tableView willDisplayCell:(UITableViewCell *) cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     // customize the cell just before it will be displayed 

     // access section header 
     UIView *sectionHeader = [tableView headerViewForSection:indexPath.section]; 

     // access section header label 
     UILabel *headerLeftLabel = (UILabel *)[sectionHeader viewWithTag:HEADER_LABEL_TAG]; 

     // access cell's corresponding label which is to be aligned as the header's above label 
     UILabel *leftCellLabel = (UILabel *)[cell.contentView viewWithTag:CELL_LABEL_TAG]; 

     // align/ reframe the cells label with the corresponding label in the header 
     [leftCellLabel setFrame: headerLeftLabel.frame]; 

     // similar for other labels 

} 
0

Вы, вероятно, будет в состоянии использовать basic/default UITableViewCell стиль, затем установите текстовое поле как ячейку accessoryView.

Использование стиля basic автоматически выровняет заголовок раздела и текст в каждой ячейке.

Put a UITextField inside a UITableViewCell's AccessoryView

0

Ведущее пространство секция заголовок или системы определяется Right Detail ячейку стиля, отличаются при разных ориентациях экрана. Это 16 очков в режиме портрета и 20 пунктов в ландшафтном режиме. В то время как конечное пространство метки Detail постоянно находится в 15 точках.

В настоящее время, что я сделал это, чтобы создать выходы для ведущих ограничений якоря каждого мнения в пользовательских ячейках, и изменить их константы следующего способа:

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews(); 
    // 16 in portrait mode, and 20 in landscape mode, act as the baseline 
    let spacing = titleLabelOfRightDetailCell.frame.origin.x; 
    // leadingAnchorConstraints is an array of views within custom table view cells that need to be left aligned 
    for constraint in leadingAnchorConstraints { 
     constraint.constant = spacing; 
    } 
} 

Таким образом, я могу убедиться, что все представления в виде таблицы ячейки выравниваются влево, либо в портретном режиме, либо в альбомном режиме.

EDIT:

Найдено более элегантное решение: Matching left alignment of custom & standard UITableViewCell types

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