【问题标题】:Autolayout, pinning a view to sibling of zero height自动布局,将视图固定到高度为零的同级
【发布时间】:2013-08-29 22:28:06
【问题描述】:

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

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

当图像视图中有图像时,我建立的约束按预期工作。但是,当没有图像且图像视图的高度为 0 时,评论视图无法填充其容器(即其顶部不等于其父视图的顶部)。 我希望如果视图 A 的顶部固定到视图 B 的底部并且视图 B 的高度为 0,则视图 A 的 origin.y 将是视图 B 的 origin.y。但事实并非如此。 谁能告诉我我的 AutoLayout 格式有什么问题?

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

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

这是发生的事情的截图:

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

【问题讨论】:

  • 您发布的约束应该按照您想要的方式工作,因此必须有其他约束阻止视图扩展。看起来它的大小保持不变——确保它没有明确的高度设置或对超级视图的顶部约束。
  • @rdelmar,感谢您的回复。我将深入研究 _commentView 的子视图中的约束。

标签: ios autolayout visual-format-language


【解决方案1】:

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

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

_usernameLabel 和 _contentLabel 都是 _commentView 的子视图。 这似乎是令人讨厌的约束。如果我删除最后一个管道, _commentView 会按预期调整大小。不幸的是,没有最后的管道,_contentLabel 不会扩展到其父视图的底部。但这是一个单独的问题。

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 2013-02-02
    • 2016-04-18
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    相关资源
    最近更新 更多