2011-01-03 3 views
0

Я пытаюсь создать заголовок таблицы с закругленными углами, но в верхней части заголовка появляется пробел, и я не могу избавиться от него. Смотрите картину: alt textiphone - проблема с заголовком таблицы

это код, у меня есть для заголовка

#define HEADER_HEIGHT 35.0f 


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return HEADER_HEIGHT; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 


    if (tableView.tableHeaderView) { // header was already created... go away 
    return tableView.tableHeaderView; 
    } 

    CGFloat width = 300.0f; 
    CGRect rectArea = CGRectMake(10.0f, 5.0f, width, HEADER_HEIGHT); 

    tableView.tableHeaderView = [[[UIView alloc] initWithFrame:rectArea] autorelease]; 

    UIColor *orange = [UIColor colorWithRed:(255.0f/255.0f) green:(228.0f/255.0f) blue:0.0f alpha:1.0f]; 

    [tableView.tableHeaderView setBackgroundColor:orange]; 

    rectArea = CGRectMake(10.0f, 5.0f, width, HEADER_HEIGHT); 
    UILabel *lbl = [[UILabel alloc] initWithFrame:rectArea]; 
    lbl.text = NSLocalizedString(@"TGERAL", @""); 
    lbl.textAlignment = UITextAlignmentLeft; 
    lbl.font = [UIFont systemFontOfSize:13.0f]; 
    lbl.textColor = [UIColor blackColor]; 
    lbl.backgroundColor = [UIColor clearColor]; 
    lbl.numberOfLines = 2.0f; 
    lbl.lineBreakMode = UILineBreakModeWordWrap; 
    //[lbl sizeToFit]; 

    [tableView.tableHeaderView addSubview:lbl]; 
    [lbl release]; 

    self.tableView.tableHeaderView.layer.cornerRadius = 6.0f; 

    return tableView.tableHeaderView; 
} 

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

Вы знаете, что мне не хватает?

благодарит

ответ

2

В таблице есть два типа заголовков, и я думаю, вы смешиваете/переплетаете их.

Первый заголовок таблицы. Второй - заголовки разделов таблицы.

Непонятно, какой из них вы хотите. Если вам нужен один заголовок для всей таблицы, вам нужен заголовок таблицы, и вы установите его с помощью tableView.tableHeaderView = myHeaderView. Вы можете установить высоту этого заголовка, установив высоту кадра для своего вида. ТаблицаView автоматически установит ширину этого заголовка.

Если вы хотите отдельные заголовки в каждом разделе таблицы, вы должны переопределить tableView: viewForHeaderInSection :, и вернуть пользовательский вид. Опять же, вы должны установить начальный кадр для этого представления на нужную высоту; tableview будет регулировать ширину.

+0

Вы правы. Не заметил, что он установил tableHeaderView в методе sectionHeader. – Anna

+0

спасибо. Я знал, что это было что-то глупое, но я не мог этого видеть !!! thankssssssssss !!!!!!!!!!!!!!!! – SpaceDog

1

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

+0

Вы правы. Не заметил, что он установил tableHeaderView в методе sectionHeader. – Anna

1

Если эта таблица создана в Interface Builder, это заголовок и нижний колонтитул таблицы по умолчанию, которые они применяют, когда вы перетаскиваете его в свой вид. Если вы перейдете в информацию IB, вы можете изменить размер каждого из них. Удалив эти значения, ваша таблица должна правильно.