Dav*_*vis 1 objective-c uitableview ios nstableheaderview
大家好我有一个TableHeaderView,一切都由Autolayout管理:
的UIImageView
在顶部应始终为2:1,所以我设置纵横比和所需约束的其余部分.
4 UIButtons
应该始终是水平的,并且应该具有相同的高度和宽度.所以我使用Equal Width和Equal Height,并且纵横比为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];
}
}
}
Run Code Online (Sandbox Code Playgroud)这是我的代码:
- (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];
}
Run Code Online (Sandbox Code Playgroud)
我UILabels
从我的服务器获取了我的图像和文本,所以我必须等到响应到达,然后我打电话initializeHeaderViewLabels
.
**我的问题是tableHeaderView在运行时太大了,所以我的UILabel被拉伸了,并且有很多whiteSpace.也许我想念一些东西?
为了使它工作,你需要一些魔法或从表头视图迁移.我已经在这里回答了类似的问题.诀窍是tableHeaderView
通过autolayout评估它的高度后神奇地重置.我为此创建了示例项目:TableHeaderView + Autolayout.
归档时间: |
|
查看次数: |
6161 次 |
最近记录: |