2016-10-25 3 views
0

У меня есть UITableView с несколькими разделами с заголовками заголовков.UITableView - сохранить заголовок заголовка раздела 0 от касания заголовка таблицы

У меня также есть главный заголовок для таблицы.

Моя проблема в том, что метка заголовка раздела 0 касается верхнего края заголовка для этого раздела, который находится вверху против заголовка всей таблицы. Это не проблема в другом месте, потому что в других разделах есть небольшой нижний колонтитул, поэтому между другими заголовками и последней ячейкой в ​​предыдущем разделе есть дополнительное пространство.

Не могу понять, как это исправить.

В идеале я бы просто добавил пробел между заголовком таблицы и заголовком первого раздела, но, глядя на доступные методы tableview/delegate, это невозможно.

Моей второй мыслью было просто сосредоточить текст заголовка вертикально внутри заголовка. Для этого я нашел метод viewForHeaderInSection. Я попробовал следующее, чтобы получить доступ к метке, но отсюда я зациклился на том, как получить вертикальное выравнивание. Все параметры NSTextAlignment выглядят как горизонтальные, а не вертикальные.

(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    (UITableViewHeaderFooterView *view = (UITableViewHeaderFooterView *)[super tableView:tableView viewForHeaderInSection:section]; 

    // center view.textLabel 

    return view; 
} 

Любые советы по наилучшему способу сделать это? Я на правильном пути? Пытаясь отполировать некоторый пользовательский интерфейс в моем приложении, и видеть, что этот текст протирает голову, больно каждый раз, когда загружается таблица.

Edit- Вот снимок экрана, показывающий вопрос: enter image description here

+0

Можете ли вы показать скриншот вашего вопроса?Я бы предложил переместить содержимое заголовка раздела, чтобы у вас было дополнительное пространство наверху (возможно, прозрачное). – alexburtnik

+0

Возможно, вы просто захотите выбрать пользовательский UITableHeaderFooterView. См. Здесь: http://stackoverflow.com/a/21761879/2754727 – pnavk

+0

«Содержимое» - это фон заголовка таблицы. Я добавил к нему градиентный слой. Теперь добавьте ссылку на экран. Извиниться за редакцию. –

ответ

0

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

Я пробовал это решение, но это не сработало, потому что кадр не был правильно установлен в моем методе viewDidLayoutSubviews или методе viewWillAppear. Решением этого было просто вызвать [myView layoutIfNeeded] перед вызовом моего метода для добавления слоя градиента.

Я все еще думаю, что должно быть Данг значение старина набивка между заголовком таблицы и содержимое таблицы ...

0

Скриншот действительно поможет, пожалуйста, обновите ваш вопрос, если вы можете.

В то же время, если я правильно понял проблему, почему бы вам просто не добавить некоторый запас ниже содержания, которое у вас есть в вашем tableView.tableHeaderView?

Или, если это не вариант, вы можете сделать свои собственные заголовки без вызова super из вашего примера (но я согласен viewForHeaderInSection это правильный путь).

EDIT после просмотра вашего скриншота

Просто используйте методы viewForHeaderInSection и heightForHeaderInSectionUITableViewDelegate «s - вот некоторый код, который может помочь вам начать работу:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 30)]; 
    headerView.backgroundColor = [UIColor redColor]; 

    UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectInset(headerView.bounds, 10, 0)]; 
    [headerView addSubview:headerLabel]; 
    headerLabel.text = @"Section header"; 
    return headerView; 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    return 30.0f; 
} 
+0

Обновлен вопрос с помощью скриншота. Проблема заключается в том, что между заголовком раздела и содержимым в заголовке таблицы нет пробела, это фон заголовка в таблице, вызывающий нажатие метки. Он просто выглядит неряшливым. Я попытался добавить UIView в заголовок таблицы, изменив фон этого представления как градиента, и сохранил backgroun dof, когда заголовок действительно загорелся, но когда я применяю градиент, он считает, что кадр UIVIew массивный и не применяется должным образом, даже если он находится в viewDidLayoutSubviews. –

+0

См. Мое редактирование. Имейте в виду, что вы можете возвращать любое представление даже из файла .xib с помощью автозапуска и т. Д. – phi

+0

Я использовал heightForHeaderInSection и настраивал каждый раздел, а также titleForHeaderInSection для создания этого заголовка. Вот почему я пытался называть [super viewForHeaderInSection] и хотел отредактировать позицию этого ярлыка - мне нужно, чтобы форматирование соответствовало остальным заголовкам, я просто хочу, чтобы метки были сосредоточены внутри заголовка, а не касались его вершины. Похоже, что это сработает, но потребует, чтобы я реализовал его для каждого отдельного заголовка, чтобы сохранить все единообразное, когда все, что я хочу, - это пара пикселей между заголовком моей таблицы и заголовком раздела 0. –

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