2016-08-05 5 views
0

Я пытался настроить tableHeaderView в раскадровке, проблема в том, что, похоже, tableHeaderView имеет фиксированный размер. Когда я запускаю эту программу, она выглядит так: my custom headerViewКак изменить высоту таблицыHeaderView в раскадровке?

Фактически, два серых UILabel являются частью моего headerView, но, как вы можете видеть, он имеет фиксированный размер. И я уже пытался изменить размер моего headerView в viewDidLoad:

UIView *headerView = self.tableView.tableHeaderView; 
    CGRect frame = headerView.frame; 
    frame.size = CGSizeMake(frame.size.width, frame.size.width/2.6); 
    headerView.frame = frame; 
    [self.tableView updateConstraintsIfNeeded]; 

PS: Я видел несколько подобных вопросов, но они просто решили его с updateConstraintsIfNeeded, но я не знаю, что Безразлично» т работает для меня. Моя версия Xcode 7.2, спасибо!

+0

добавить ограничение по высоте и присвоить ему динамическое значение. –

+0

Вы пробовали - (CGFloat) tableView: (UITableView *) tableView heightForHeaderInSection: (NSInteger); –

+0

@SaadChaudhry Ну, я пробовал использовать heightForHeaderInSection, интересно то, что он просто добавляет еще один заголовок под моим настраиваемым headerView. –

ответ

0

Просто следуйте код:

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, height)]; 
UILabel *labelView = [[UILabel alloc] initWithFrame:CGRectMake(x, y, width, height)]; 
labelView.text = @"Some Text"; 

[headerView addSubview:labelView]; 
self.tableView.tableHeaderView = headerView; 
+0

Но таким образом я просто получил пустое пространство, Я уже делаю свой собственный headerview в раскадровке, мне просто нужно изменить его высоту. –

+0

Пустое пространство UIView, которое вы добавляете в заголовке. вам нужно добавить метку, чтобы дать некоторый текст в заголовке. –

+0

Я обновляю ответ. просто следуйте за ним –

0

Вы работаете с AutoLayout? Пожалуйста, следуйте этим

- (void)sizeHeaderToFit 
{ 
    UIView *header = self.tableView.tableHeaderView; 

    [header setNeedsLayout]; 
    [header layoutIfNeeded]; 

    CGFloat height = [header systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; 
    CGRect frame = header.frame; 

    frame.size.height = height; 
    header.frame = frame; 

    self.tableView.tableHeaderView = header; 
} 
+0

Кажется, что это не работает для меня. –

0

Почему вы не можете создать собственный UIView подкласс и добавить ярлыки в нем?

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 100;//whatever size you want 
} 

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let sectionInfo = fetchedResultsController!.sections! as [NSFetchedResultsSectionInfo] 

    let headerView = CustomView() 
    headerView.backgroundColor = UIColor.redColor() 
    headerView.addLabels()//add two labels in this method 
    return headerView 
} 
+0

Ну, я просто хочу попробовать создать пользовательский заголовок в раскадровке. –

+0

@WeiDu: Затем создайте его и добавьте в него метки с ограничениями, обеспечивайте любую высоту, которую вы хотите! – D4ttatraya

1

Попробуйте этот код

headerView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
Смежные вопросы