Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

}

— (UIView *) tableView:(UITableView *)tableView

viewForFooterInSection:(NSInteger)section{

if (section == 0){

return [self newLabelWithTitle:@"Section 1 Footer"];

}

return nil;

}

Если теперь запустить приложение в

эмуляторе, получится такая картинка, как на рис. 4.7.

Рис. 4.7. Метки для верхнего и нижнего колонтитулов табличного вида, выровненные неправильно

Причина такого неправильного выравнивания в том, что родительский вид не знает высоты видов-меток. Для указания высоты видов верхнего и нижнего колонтитулов следует использовать два следующих метода, определяемых в протоколе UITableViewDelegate:

• tableView: heightForHeaderInSection: — возвращаемое значение данного метода относится к типу CGFloat. Оно указывает высоту верхнего колонтитула раздела табличного вида. Индекс раздела передается в параметре heightForHeaderInSection;

• tableView: heightForFooterInSection: — возвращаемое значение данного метода относится к типу CGFloat. Оно указывает высоту нижнего колонтитула раздела табличного вида. Индекс раздела передается в параметре heightForHeaderInSection.

— (CGFloat) tableView:(UITableView *)tableView

heightForHeaderInSection:(NSInteger)section{

if (section == 0){

return 30.0f;

}

return 0.0f;

}

— (CGFloat) tableView:(UITableView *)tableView

heightForFooterInSection:(NSInteger)section{

if (section == 0){

return 30.0f;

}

return 0.0f;

}

Запустив это приложение, вы увидите, что теперь метки верхнего и нижнего колонтитулов имеют фиксированную высоту. Но в написанном нами коде все еще остается какая-то ошибка — дело в левом поле меток верхнего и нижнего колонтитулов. В этом можно убедиться, взглянув на рис. 4.8.

Рис. 4.8. Левые поля меток в верхнем и нижнем колонтитулах — неправильные

Причина заключается в том, что по умолчанию табличный вид размещает верхний и нижний колонтитулы в точке с координатой 0.0f по оси Х. Можно подумать, что эта проблема решается изменением контуров меток верхнего и нижнего колонтитулов, но, к сожалению, это мнение ошибочно. Проблема решается созданием универсального вида UIView, где и размещаются метки для верхнего и нижнего колонтитулов. Возвратите в качестве верхнего/нижнего колонтитула такой универсальный вид, но измените положение меток по оси Х в этом виде.

Теперь изменим реализацию методов tableView: viewForHeaderInSection:

и tableView: viewForFooterInSection::

— (UIView *) tableView:(UITableView *)tableView

viewForHeaderInSection:(NSInteger)section{

UIView *header = nil;

if (section == 0){

UILabel *label = [self newLabelWithTitle:@"Section 1 Header"];

/* Перемещаем метку на 10 точек вправо. */

label.frame = CGRectMake(label.frame.origin.x + 10.0f,

5.0f, /* Опускаемся на 5 точек вниз

по оси y. */

label.frame.size.width,

label.frame.size.height);

/* Делаем ширину содержащего вида на 10 точек больше,

чем ширина метки, так как для метки требуется

10 дополнительных точек ширины в левом поле. */

CGRect resultFrame = CGRectMake(0.0f,

0.0f,

label.frame.size.width + 10.0f,

label.frame.size.height);

header = [[UIView alloc] initWithFrame: resultFrame];

[header addSubview: label];

}

return header;

}

— (UIView *) tableView:(UITableView *)tableView

viewForFooterInSection:(NSInteger)section{

UIView *footer = nil;

if (section == 0){

UILabel *label = [[UILabel alloc] initWithFrame: CGRectZero];

/* Перемещаем метку на 10 точек вправо. */

label.frame = CGRectMake(label.frame.origin.x + 10.0f,

5.0f, /* Опускаемся на 5 точек вниз по оси y*/

label.frame.size.width,

label.frame.size.height);

/* Делаем ширину содержащего вида на 10 точек больше,

чем ширина метки, так как для метки требуется

10 дополнительных точек ширины в левом поле. */

CGRect resultFrame = CGRectMake(0.0f,

0.0f,

label.frame.size.width + 10.0f,

label.frame.size.height);

footer = [[UIView alloc] initWithFrame: resultFrame];

[footer addSubview: label];

}

return footer;

}

Теперь, запустив приложение, вы получите примерно такой результат, как на рис. 4.9.

Поделиться:
Популярные книги

Бояръ-Аниме. Газлайтер. Том 30

Володин Григорий Григорьевич
30. История Телепата
Фантастика:
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 30

Мы друг друга не выбирали

Кистяева Марина
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
5.00
рейтинг книги
Мы друг друга не выбирали

На границе империй. Том 10. Часть 2

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 10. Часть 2

Глэрд IX: Легионы во Тьме

Владимиров Денис
9. Глэрд
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Глэрд IX: Легионы во Тьме

Учитель из прошлого тысячелетия

Еслер Андрей
6. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Учитель из прошлого тысячелетия

Железный Воин Империи

Зот Бакалавр
1. Железный Воин Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Железный Воин Империи

Геном хищника. Книга третья

Гарцевич Евгений Александрович
3. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Геном хищника. Книга третья

Эпоха Опустошителя. Том IV

Павлов Вел
4. Вечное Ристалище
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эпоха Опустошителя. Том IV

Целого Мира Мало

Джиллиан Алекс
Любовные романы:
современные любовные романы
8.88
рейтинг книги
Целого Мира Мало

Перешагнуть пропасть

Муравьёв Константин Николаевич
1. Перешагнуть пропасть
Фантастика:
боевая фантастика
космическая фантастика
8.38
рейтинг книги
Перешагнуть пропасть

Первый среди равных

Бор Жорж
1. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Контртеррор

Валериев Игорь
6. Ермак
Фантастика:
альтернативная история
5.00
рейтинг книги
Контртеррор

Изгой Проклятого Клана. Том 3

Пламенев Владимир
3. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 3