自定义uitableheader视图

时间:2013-02-25 20:27:30

标签: uitableview frame

我想在我的uitableviewheader中放置一个自定义视图,这个自定义视图有一个UILabel和一个UITextView,标签有一个固定的大小,而uitextview需要根据uitextview的内容进行更改。 为此,我使用此代码:

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {

    return 100;
}
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,100)];
headerView.backgroundColor = [UIColor blueColor];


NSString *userString = [user username];
UILabel *userLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
[userLabel setTextAlignment:NSTextAlignmentCenter];
[userLabel setText:userString];
userLabel.backgroundColor = [UIColor redColor];
[headerView addSubview:userLabel];

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 40, 320, 60)];
NSString *postString = [currentPost objectForKey:@"postTextKey"];
textView.text = postString;

[headerView addSubview:textView];

CGRect frame = textView.frame;
frame.size.height = textView.contentSize.height;
textView.frame = frame;

frame = headerView.frame;
frame.size.height = textView.frame.size.height+40;
headerView.frame = frame;

self.tableView.tableHeaderView.frame = headerView.frame;

return headerView;

}

问题是如果headerview具有正确的高度,则tableviewheader是错误的。错误在哪里?

1 个答案:

答案 0 :(得分:0)

1)tableHeaderView与章节标题视图(headerViewForSection:)不同 2)如果要更改高度,请在- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section方法中指定高度,然后在高度发生变化时调用reloadData方法。

注意:你不想经常这样做。