From 9e24af509eec05e57fd716c5678040e854ccfb2c Mon Sep 17 00:00:00 2001 From: shannon Date: Tue, 10 Dec 2024 10:18:00 -0500 Subject: [PATCH] Fix some layout constraint warnings and allow images to keep their own aspect ratio in compact status card layout, even if that leaves some blank space. --- .../Content/StatusCardAuthorControl.swift | 2 +- .../View/Content/StatusCardControl.swift | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardAuthorControl.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardAuthorControl.swift index 954a9b5c6..eb8cced0c 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardAuthorControl.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardAuthorControl.swift @@ -43,7 +43,7 @@ class StatusCardAuthorControl: UIControl { bottomAnchor.constraint(equalTo: contentStackView.bottomAnchor, constant: 6), avatarImage.widthAnchor.constraint(equalToConstant: 16), - avatarImage.widthAnchor.constraint(equalTo: avatarImage.heightAnchor), + avatarImage.widthAnchor.constraint(equalTo: avatarImage.heightAnchor).priority(.defaultHigh), ] NSLayoutConstraint.activate(constraints) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardControl.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardControl.swift index fca51144a..cfa0130c9 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardControl.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusCardControl.swift @@ -281,7 +281,6 @@ public final class StatusCardControl: UIControl { titleLabel.text = title descriptionLabel.text = card.description - imageView.contentMode = .scaleAspectFill imageView.sd_setImage( with: { @@ -290,9 +289,7 @@ public final class StatusCardControl: UIControl { }(), placeholderImage: icon(for: card.layout) ) { [weak self] image, _, _, _ in - if image != nil { - self?.imageView.contentMode = .scaleAspectFill - } else { + if image == nil { self?.imageView.isHidden = true self?.imageDividerView.isHidden = true } @@ -336,6 +333,7 @@ public final class StatusCardControl: UIControl { switch layout { case .large(let aspectRatio): + imageView.contentMode = .scaleAspectFill imageView.isHidden = false imageDividerView.isHidden = false containerStackView.alignment = .fill @@ -353,11 +351,12 @@ public final class StatusCardControl: UIControl { // set a reasonable max height for very tall images imageView.heightAnchor .constraint(lessThanOrEqualToConstant: 400), - authorDivider.widthAnchor.constraint(equalTo: containerStackView.widthAnchor), - imageDividerView.widthAnchor.constraint(equalTo: mainContentStackView.widthAnchor) + authorDivider.widthAnchor.constraint(equalTo: containerStackView.widthAnchor).priority(.defaultHigh), + imageDividerView.widthAnchor.constraint(equalTo: mainContentStackView.widthAnchor).priority(.defaultHigh) ] imageDividerConstraint = imageDividerView.heightAnchor.constraint(equalToConstant: pixelSize).priority(.defaultLow - 1).activate() case .compact, .noPreviewImage: + imageView.contentMode = .scaleAspectFit mainContentStackView.axis = .horizontal mainContentStackView.alignment = .center imageView.isHidden = false @@ -365,12 +364,12 @@ public final class StatusCardControl: UIControl { containerStackView.alignment = .fill //.center containerStackView.axis = .vertical layoutConstraints = [ - imageView.heightAnchor.constraint(equalTo: mainContentStackView.heightAnchor), - imageView.widthAnchor.constraint(equalToConstant: 85), + imageView.heightAnchor.constraint(equalTo: mainContentStackView.heightAnchor).priority(.defaultHigh), + imageView.widthAnchor.constraint(greaterThanOrEqualToConstant: 85), // heightAnchor.constraint(equalToConstant: 85).priority(.defaultLow - 1), // heightAnchor.constraint(greaterThanOrEqualToConstant: 85), - imageDividerView.heightAnchor.constraint(equalTo: mainContentStackView.heightAnchor), - authorDivider.widthAnchor.constraint(equalTo: containerStackView.widthAnchor) + imageDividerView.heightAnchor.constraint(equalTo: mainContentStackView.heightAnchor).priority(.defaultHigh), + authorDivider.widthAnchor.constraint(equalTo: containerStackView.widthAnchor).priority(.defaultHigh) ] imageDividerConstraint = imageDividerView.widthAnchor.constraint(equalToConstant: pixelSize).priority(.defaultLow - 1).activate() imageView.isHidden = layout == .noPreviewImage