Autolayout,将视图固定为零高度的兄弟

时间:2013-08-29 22:28:07

标签: ios autolayout visual-format-language

我正在使用AutoLayout将子视图放在UITableViewCell子类中。视图层次结构的结构如下:

  • 顶级容器视图
    • 图片视图
    • 评论容器视图
      • 头像图片视图
      • 赞按钮
      • 用户名标签
      • 评论按钮
      • 评论标签

当图像视图中有图像时,我建立的约束按预期工作。但是,当没有图像并且图像视图的高度为0时,注释视图无法填充其容器(即,其顶部不等于其超级视图的顶部)。 我希望如果视图A的顶部固定在视图B的底部而视图B的高度为0,则视图A的原点将是视图B的origin.y。但这不是发生的事情。 谁能告诉我我的AutoLayout格式有什么问题?

    [self.contentContainerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_postImageView(<=200.0)][_commentView]|"
                                                                                  options:0
                                                                                  metrics:nil
                                                                                    views:NSDictionaryOfVariableBindings(_postImageView, _commentView)]];

_commentView中的子视图还有其他限制,我会根据请求发布。

以下是对正在发生的事情的了解:

Gap between top of second cell and top of blue comment container

第二个单元格中的所需效果(这是我将格式字符串修改为:@"|[_commentView]|时得到的结果):显然,这会破坏图像存在的情况。

enter image description here

1 个答案:

答案 0 :(得分:0)

所以,我的_commentView中有一个约束,格式如下:

@"V:|-(8.0)-[_usernameLabel(30)]-[_contentLabel]|"

_usernameLabel和_contentLabel都是_commentView的子视图。 这似乎是违规的约束。如果我删除最后一个管道,_commentView会按预期调整大小。遗憾的是,如果没有最终的管道,_contentLabel不会扩展到其超级视图的底部。但这是一个单独的问题。