2014-01-14 3 views
1

Я пытался подражать представлению, подобному iOS 7 «Ярлык».Добавить текст в разделе таблицы в UITableView

enter image description here

Я использовал UITableViewController со статическими клеток, 1 и 2 секции строк. Для текста «Создать ярлык, который ...», я попытался использовать UILabel, а также нижний колонтитул раздела. Проблема с нижним колонтитулом заключалась в том, что я не мог понять способ переноса длинного текста на несколько строк. Поэтому мне интересно, что такое «стандартный» или предпочтительный способ реализации текста по разделам? Благодаря!

ответ

3

При выборе Просмотр Раздел таблицы в раскадровке и введите текст в «Footer», он автоматически обертывают.

enter image description here

Если вы хотите получить больше контроля над шрифтом вы можете установить вид пользовательских колонтитула с помощью - [UITableViewDelegate Tableview: viewForFooterInSection:]

+4

Спасибо, это сработало! То, что мне не хватало, было то, что стиль представления таблицы должен быть «сгруппирован», иначе нижний колонтитул не будет автоматически обертываться – marsant

+0

@Jesse: Как я могу изменить выравнивание текста нижнего колонтитула? Есть идеи? – Nit

+0

@Nit In Interface Builder, создайте пользовательский вид нижнего колонтитула, перетащив UIView в нижнюю часть представления таблицы. Добавьте UILabel в нижний колонтитул и установите выравнивание UILabel. – Jesse

1

Использование UILabel в сноске и установить его на перенос строк (количество строк = 0)

2

Следующий код повторяет то, что вы показали выше. Вместо создания ярлыка и его возврата я создал простой UIView, который представлял собой произвольную жестко кодированную высоту (вы можете изменить ее в соответствии с вашими потребностями), а затем создал ярлык и добавил ярлык в представление, возвращая чтобы вы могли центрировать метку в представлении, как это было при создании фрейма. Установив количество строк в 0, вы эффективно говорите этикетке, что будет несколько строк, и я устанавливаю маску авторазмера на ярлыке, чтобы, если просмотр поворачивается, текст по-прежнему будет оставаться центрированным в представлении с добавлением 10 точек на любом боковая сторона. Вы также захотите, чтобы вы вернули соответствующий heightForFooterInSection, если вы решили добавить что-то ниже, позже он не будет перекрывать ваш нижний колонтитул.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 
    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 80)]; 

    UILabel *explanationLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, self.view.frame.size.width - 20, 80)]; 
    explanationLabel.textColor = [UIColor darkGrayColor]; 
    explanationLabel.numberOfLines = 0; 
    explanationLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    explanationLabel.text = @"Create a shortcut that will automatically expand into the word or phrase as you type."; 
    [footerView addSubview:explanationLabel]; 

    return footerView; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { 
    return 80; 
} 

Дал мне это:

enter image description here

+0

просто примечание должно быть 'UILabel * explainLabel = [[UILabel alloc] initWithFrame: CGRectMake (10, 0, self.view.frame. size.width - 20, 80)]; 'чтобы иметь метку с центром – yawnobleix

1

все другие ответы прямо в использовании UILabel, но для достижения эффекта идентичную 100% вы должны использовать свойство attributedText метки. Чем вы можете также добавить отступ, показанный на оригинальном скриншоте.

screenshot

2

СВИФТ 4 Версия

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 

    let footerView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 80)) 

    let explanationLabel = UILabel(frame: CGRect(x: 10, y: 0, width: view.frame.size.width - 20, height: 80)) 
    explanationLabel.textColor = UIColor.darkGray 
    explanationLabel.numberOfLines = 0 
    explanationLabel.text = tableDataSectionFooters[section] 
    footerView.addSubview(explanationLabel as? UIView ?? UIView()) 
    return footerView 
} 

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return 80 
} 
Смежные вопросы