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

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

Жанры

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.

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

Бастард Бога (Дилогия)

Матвеев Владимир
Фантастика:
альтернативная история
5.11
рейтинг книги
Бастард Бога (Дилогия)

Журнал «Если», 2002 № 08

Андерсон Кевин Джей
114. Журнал Если
Фантастика:
научная фантастика
5.00
рейтинг книги
Журнал «Если», 2002 № 08

Города в полете

Блиш Джеймс Бенджамин
Фантастика:
космическая фантастика
4.25
рейтинг книги
Города в полете

Газлайтер. Том 31

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

Убивая маску

Метельский Николай Александрович
13. Унесенный ветром
Фантастика:
боевая фантастика
5.75
рейтинг книги
Убивая маску

Российские фантасмагории (сборник)

Булгаков Михаил Афанасьевич
Юмор:
юмористическая проза
5.00
рейтинг книги
Российские фантасмагории (сборник)

Барон

Первухин Андрей Евгеньевич
5. Ученик
Фантастика:
фэнтези
5.60
рейтинг книги
Барон

Снайпер

Поселягин Владимир Геннадьевич
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Снайпер

Телохранитель Генсека. Том 1

Алмазный Петр
1. Медведев
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Телохранитель Генсека. Том 1

Ратник

Ланцов Михаил Алексеевич
3. Помещик
Фантастика:
альтернативная история
7.11
рейтинг книги
Ратник

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Жена неверного ректора Полицейской академии

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного ректора Полицейской академии

Очерки времен и событий из истории российских евреев. 1945 – 1970 гг. Книга 6

Кандель Феликс Соломонович
Научно-образовательная:
история
5.00
рейтинг книги
Очерки времен и событий из истории российских евреев. 1945 – 1970 гг. Книга 6

Древесный маг Орловского княжества

Павлов Игорь Васильевич
1. Орловское княжество
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества