大家好,我有一个 TableHeaderView,一切都由 Autolayout 管理:
UIImageView
顶部应始终为 2:1,因此我设置了纵横比和其他所需的约束。4
UIButtons
应该始终是水平的,并且应该具有相同的高度和宽度。所以我使用等宽和等高以及 1:1 的纵横比我有两个
UILabels
设置numberOfLines
为 0。我还创建了我的子类UILabel
,因为preferredMaxLayoutWidth
,像这样:- (void) layoutSubviews { [super layoutSubviews]; if ( self.numberOfLines == 0 ) { if ( self.preferredMaxLayoutWidth != self.frame.size.width ) { self.preferredMaxLayoutWidth = self.frame.size.width; [self setNeedsUpdateConstraints]; } } }
这是我的代码:
- (void)initializeHeaderViewLabels
{
//After the Response from my server arrived i set the tableHeaderView with the Textdata
self.tableView.tableHeaderView = nil;
if((self.contentDict[@"title"]) != [NSNull null])
{
self.headerTitleLabel.text = (self.contentDict[@"title"]);
}
if((self.contentDict[@"shortDescription"]) != [NSNull null])
{
self.headerDescriptionLabel.text = (self.contentDict[@"shortDescription"]);
}
[self.headerView setNeedsLayout];
[self.headerView layoutIfNeeded];
CGFloat height = [self.headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect headerFrame = self.headerView.frame;
headerFrame.size.height = height;
self.headerView.frame = headerFrame;
[self.tableView setTableHeaderView:self.headerView];
}
我从我的服务器获取我的图像和文本UILabels
,所以我必须等到响应到达,然后我调用initializeHeaderViewLabels
。
**我的问题是 tableHeaderView 在运行时太大了,所以我的 UILabels 被拉伸并且有很多空白。也许我想念什么?