我目前正在开发社交媒体应用程序(基本类似于Facebook),而且我最难使用自动布局。我曾经使用框架和东西来做,但由于我的整个项目使用自动布局,我想尝试使其工作。
基本上,我有一个顶部有一些信息的单元格,下面是UILabel(包含用户的状态),下面是一个视图(可以包含从UIImage到Web视图的任何内容)。它充当容器)和底部带有操作按钮的栏(如/ share和stuff)。
我对任何内容使用相同的单元格(仅文字,图片,视频和网页)。我会做的是当用户只共享状态时,我删除容器视图(或隐藏它),在其他情况下,我开始:
细胞高度很好。我对状态文字标签有困难。
首先,我尝试使用setFrame在cellForRowAtIndexPath中设置标签的高度。它不起作用。
之后,我尝试直接在单元格中计算标签的高度。我在单元格的layoutSubviews中调用了这个方法
- (void)resizeStatusTextField
{
NSString* text = self.feedTextLabel.text;
CGRect rect = [text boundingRectWithSize:CGSizeMake(300, 10000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: self.feedTextLabel.font} context:nil];
NSDictionary* views = NSDictionaryOfVariableBindings(_containerView, _feedTextLabel);
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:[_containerView]-46-[_feedTextLabel(%f)]", rect.size.height] options:0 metrics:nil views:views]];
[self setNeedsUpdateConstraints];
}
所以我尝试做的是将feedTextLabel约束设置为低于它的容器顶部的46个点并设置计算的大小。
它似乎或多或少地起作用(我不确定这是否是正确的方法)但是现在每当我滚动时,文本内容就会消失。
如果有人可以向我指出在tableView中管理这种动态约束的正确方法,我们将非常感激。
感谢。
编辑:我当然读过像" Using Auto Layout in UITableView for dynamic cell layouts & variable row heights"这样的帖子,但我相信我的情况非常奇怪,因为我有多个视图可以在单元格内部具有动态高度。所以请不要将此帖标记为重复;)谢谢