ios - 使用可读内容指南和灵活的缩略图高度不明确

标签 ios autolayout

我有一个视频缩略图(UIImageView),我希望它具有灵活的大小而不是固定的宽度和高度(以前是这样)。它需要灵活,因为我在 readableContentGuide 的缩略图和布局 anchor 之间添加了前导和尾随约束。单元格内容 View 的属性。

因此,我为缩略图高度 anchor 应用了一个比率,以使用其宽度定义高度:

NSLayoutConstraint.activate([
    videoThumbnailView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 30),
    videoThumbnailView.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor, constant: 30),
    videoThumbnailView.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor, constant: -30),
    videoThumbnailView.heightAnchor.constraint(equalTo: videoThumbnailView.widthAnchor, multiplier: VideoThumbnailRatio.plusOne.rawValue),
])

缩略图位置和大小正确,但其余内容的高度不正确:

Thumbnail with ambiguous height

Constraints of the Thumbnail with ambiguous height

Constraints of the content with ambiguous height

其余的内容约束设置如下:

let stackView = UIStackView()
stackView.configure(distributon: .fill, alignment: .fill, axis: .vertical, spacing: 5)
stackView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(stackView)
NSLayoutConstraint.activate([
    stackView.topAnchor.constraint(equalTo: videoThumbnailView.bottomAnchor, constant: 10),
    stackView.leadingAnchor.constraint(equalTo: videoThumbnailView.leadingAnchor),
    stackView.trailingAnchor.constraint(equalTo: videoThumbnailView.trailingAnchor),
])

stackView.addArrangedSubview(titleLabel)
stackView.addArrangedSubview(subtitleLabel)

let buttonsStackView = UIStackView()
buttonsStackView.configure(distributon: .fillEqually, alignment: .fill, axis: .horizontal, spacing: 10)
buttonsStackView.addArrangedSubview(contentSyncProgressView)
buttonsStackView.addArrangedSubview(myListOptionsView)
buttonsStackView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(buttonsStackView)
NSLayoutConstraint.activate([
    buttonsStackView.centerXAnchor.constraint(equalTo: stackView.centerXAnchor),
    buttonsStackView.topAnchor.constraint(equalTo: stackView.bottomAnchor, constant: 20),
    buttonsStackView.heightAnchor.constraint(equalToConstant: 30),
    buttonsStackView.widthAnchor.constraint(equalToConstant: 238),
    contentView.bottomAnchor.constraint(equalTo: buttonsStackView.bottomAnchor, constant: 20)
])

如果我强制为缩略图设置一个固定的高度值,那么一切都会顺利:

Thumbnail with no ambiguous height

Constraints with no ambiguous height

如何避免为缩略图设置固定高度并获得没有歧义的布局?

更新:

演示项目:https://github.com/ricardopereira/ThumbnailLayoutIssue

最佳答案

您应该始终将约束应用于单元格的 contentView 而不是单元格本身。

在此之后,在您的示例中,您应该将 layoutMarginsGuide 替换为 contentView.layoutMarginsGuide

您还应该将 stackViewdistribution 设置为 fill

关于ios - 使用可读内容指南和灵活的缩略图高度不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54365832/

相关文章:

ios - 如何在编辑表单时显示预先检查的 UITableViewCells。

ios - 如何使用 IBAFormSection 减小宽度?

ios - myView.bounds.size 对所有屏幕尺寸返回相同的值

ios - Xcode 9 中的自适应表格 View 单元格

ios - 当我选择自动布局选项时,ScrollView 不滚动

ios - 具有可变参数的通用类型别名

ios - 用于为所有 URLRequest 添加自定义 header 字段的 URLRequest 和 URLSession 的拦截器?

ios - 自定义键盘退格按钮

ios - 在 3.5 英寸屏幕上查看无法调整大小

ios - 对相同大小的类别有不同约束的任何解决方法?