我有一个
UITableView
,我在其中添加了一个在InterfaceBuilder中设计的头视图。此标题视图有两个
UILabel
S.第一个标签有一个标题,即始终存在的标题。第二个显示描述(如果存在)。两个字符串都可以很长。
是否有一种方法来扩展或缩小此标签和视图,以便完全显示文本,或者不显示空白?
- (void)viewDidLoad {
//.....
if (self.tableHeaderView == nil) {
[[NSBundle mainBundle] loadNibNamed:@"ArticleHeader" owner:self options:nil];
self.tableView.tableHeaderView = self.tableHeaderView;
[(UILabel* )[self.tableView.tableHeaderView viewWithTag:1] setText:self.article.name];
[(UILabel* )[self.tableView.tableHeaderView viewWithTag:2] setText:self.article.description];
}
[self.navigationController setNavigationBarHidden:YES animated:YES];
[super viewDidLoad];
}
我的解决方案
(多亏了
JK
)
- (void)viewDidLoad {
//....
if (self.tableHeaderView == nil) {
[[NSBundle mainBundle] loadNibNamed:@"ArticleHeader" owner:self options:nil];
UILabel *titleLabel = (UILabel* )[self.tableView.tableHeaderView viewWithTag:1];
UILabel *descriptionLabel = (UILabel* )[self.tableView.tableHeaderView viewWithTag:2];
titleLabel = (UILabel* )[self.tableHeaderView viewWithTag:1];
descriptionLabel = (UILabel* )[self.tableHeaderView viewWithTag:2];
CGSize sizeTitle = [self.article.name sizeWithFont:[titleLabel font]
constrainedToSize:CGSizeMake(280.0, 700.0)
lineBreakMode:UILineBreakModeWordWrap];
CGSize sizeDescription = [self.article.description sizeWithFont:[descriptionLabel font]
constrainedToSize:CGSizeMake(280.0, 700.0)
lineBreakMode:UILineBreakModeWordWrap];
float addHeight = 17.0;
[self.tableHeaderView setFrame:CGRectMake(0, 0, 280, sizeTitle.height+addHeight + sizeDescription.height+addHeight)];
[titleLabel setText:self.article.name];
[descriptionLabel setText:self.article.description];
[titleLabel setLineBreakMode:UILineBreakModeWordWrap];
[titleLabel setFrame:CGRectMake(10,10, 260, sizeTitle.height)];
[descriptionLabel setLineBreakMode:UILineBreakModeWordWrap];
if (sizeDescription.height > 0) {
[descriptionLabel setFrame:CGRectMake(20,
titleLabel.frame.size.height+titleLabel.frame.origin.y,
260,
sizeDescription.height+addHeight)];
} else {
[descriptionLabel setHidden:YES];
}
self.tableView.tableHeaderView = self.tableHeaderView;
}
//.....
[super viewDidLoad];
}
但我很好奇为什么我需要
addHeight
?
否则,较长的文本将被截断。