diff --git a/Signal/src/ViewControllers/MessageDetailViewController.swift b/Signal/src/ViewControllers/MessageDetailViewController.swift index adabd5c53..33b81955f 100644 --- a/Signal/src/ViewControllers/MessageDetailViewController.swift +++ b/Signal/src/ViewControllers/MessageDetailViewController.swift @@ -300,7 +300,7 @@ class MessageDetailViewController: OWSViewController, UIScrollViewDelegate { } if let mediaMessageView = mediaMessageView { - mediaMessageView.autoPinToSquareAspectRatio() + mediaMessageView.autoMatch(.height, to: .width, of: mediaMessageView, withOffset:0, relation: .lessThanOrEqual) } } diff --git a/SignalMessaging/attachments/MediaMessageView.swift b/SignalMessaging/attachments/MediaMessageView.swift index 1f5504929..451978ee9 100644 --- a/SignalMessaging/attachments/MediaMessageView.swift +++ b/SignalMessaging/attachments/MediaMessageView.swift @@ -172,8 +172,16 @@ public class MediaMessageView: UIView, OWSAudioAttachmentPlayerDelegate { let stackView = wrapViewsInVerticalStack(subviews: subviews) self.addSubview(stackView) fileNameLabel?.autoPinWidthToSuperview(withMargin: 32) + + // We want to center the stackView in it's superview while ensuring + // it's superview is big enough to contain it. stackView.autoPinWidthToSuperview() stackView.autoVCenterInSuperview() + NSLayoutConstraint.autoSetPriority(UILayoutPriorityDefaultLow) { + stackView.autoPinHeightToSuperview() + } + stackView.autoPinEdge(toSuperviewEdge: .top, withInset: 0, relation: .greaterThanOrEqual) + stackView.autoPinEdge(toSuperviewEdge: .bottom, withInset: 0, relation: .greaterThanOrEqual) } private func createAnimatedPreview() { @@ -286,8 +294,16 @@ public class MediaMessageView: UIView, OWSAudioAttachmentPlayerDelegate { let stackView = wrapViewsInVerticalStack(subviews: subviews) self.addSubview(stackView) fileNameLabel?.autoPinWidthToSuperview(withMargin: 32) + + // We want to center the stackView in it's superview while ensuring + // it's superview is big enough to contain it. stackView.autoPinWidthToSuperview() stackView.autoVCenterInSuperview() + NSLayoutConstraint.autoSetPriority(UILayoutPriorityDefaultLow) { + stackView.autoPinHeightToSuperview() + } + stackView.autoPinEdge(toSuperviewEdge: .top, withInset: 0, relation: .greaterThanOrEqual) + stackView.autoPinEdge(toSuperviewEdge: .bottom, withInset: 0, relation: .greaterThanOrEqual) } private func createHeroViewSize() -> CGFloat {