diff --git a/VDS/Components/TileContainer/TileContainer.swift b/VDS/Components/TileContainer/TileContainer.swift index b6014e8f..3e3b2ddf 100644 --- a/VDS/Components/TileContainer/TileContainer.swift +++ b/VDS/Components/TileContainer/TileContainer.swift @@ -179,10 +179,12 @@ open class TileContainerBase: Control where Padding //-------------------------------------------------- internal var widthConstraint: NSLayoutConstraint? internal var heightConstraint: NSLayoutConstraint? - - internal var containerViewBottomConstraint: NSLayoutConstraint? + + internal var containerViewCenterXConstraint: NSLayoutConstraint? + internal var containerViewLeadingConstraint: NSLayoutConstraint? + internal var containerViewLeadingGreaterThanOrEqualConstraint: NSLayoutConstraint? + internal var containerViewTrailingConstraint: NSLayoutConstraint? - internal var containerViewBottomLessThanOrEqualConstraint: NSLayoutConstraint? internal var containerViewTrailingLessThanOrEqualConstraint: NSLayoutConstraint? internal var contentViewTopConstraint: NSLayoutConstraint? @@ -233,14 +235,15 @@ open class TileContainerBase: Control where Padding containerView .pinTop() - .pinLeading() + .pinBottom() + containerViewCenterXConstraint = containerView.pinCenterX(anchor: centerXAnchor)?.deactivate() + containerViewLeadingConstraint = containerView.pinLeading(anchor: leadingAnchor)?.deactivate() + containerViewLeadingGreaterThanOrEqualConstraint = containerView.pinLeadingGreaterThanOrEqualTo(anchor: leadingAnchor)?.deactivate() + containerViewTrailingConstraint = containerView.pinTrailing(anchor: trailingAnchor)?.deactivate() - containerViewBottomConstraint = containerView.pinBottom(anchor: bottomAnchor)?.deactivate() - containerViewTrailingLessThanOrEqualConstraint = containerView.pinTrailingLessThanOrEqualTo(anchor: trailingAnchor)?.deactivate() - containerViewBottomLessThanOrEqualConstraint = containerView.pinBottomLessThanOrEqualTo(anchor: bottomAnchor)?.deactivate() - + backgroundImageView.pinToSuperView() widthConstraint = containerView.widthAnchor.constraint(equalToConstant: 0).deactivate() @@ -315,31 +318,40 @@ open class TileContainerBase: Control where Padding //deactivate everything widthConstraint?.deactivate() heightConstraint?.deactivate() + + containerViewCenterXConstraint?.deactivate() + + containerViewLeadingGreaterThanOrEqualConstraint?.deactivate() + containerViewLeadingConstraint?.deactivate() + containerViewTrailingLessThanOrEqualConstraint?.deactivate() - containerViewTrailingLessThanOrEqualConstraint?.deactivate() - containerViewBottomConstraint?.deactivate() containerViewTrailingConstraint?.deactivate() + print("Width: \(width?.description ?? "none")") + print("Height: \(height?.description ?? "none")") + //run logic to determine which to activate if let width, aspectRatio == .none && height == nil{ widthConstraint?.constant = width widthConstraint?.activate() - containerViewTrailingConstraint?.activate() - containerViewBottomConstraint?.activate() + containerViewCenterXConstraint?.activate() + containerViewLeadingGreaterThanOrEqualConstraint?.activate() + containerViewTrailingLessThanOrEqualConstraint?.activate() } else if let height, aspectRatio == .none && width == nil{ heightConstraint?.constant = height heightConstraint?.activate() + containerViewLeadingConstraint?.activate() containerViewTrailingConstraint?.activate() - containerViewBottomConstraint?.activate() } else if let height, let width { widthConstraint?.constant = width heightConstraint?.constant = height heightConstraint?.activate() widthConstraint?.activate() + containerViewCenterXConstraint?.activate() + containerViewLeadingGreaterThanOrEqualConstraint?.activate() containerViewTrailingLessThanOrEqualConstraint?.activate() - containerViewBottomLessThanOrEqualConstraint?.activate() } else if let width { let size = ratioSize(for: width) @@ -347,22 +359,23 @@ open class TileContainerBase: Control where Padding heightConstraint?.constant = size.height widthConstraint?.activate() heightConstraint?.activate() + containerViewCenterXConstraint?.activate() + containerViewLeadingGreaterThanOrEqualConstraint?.activate() containerViewTrailingLessThanOrEqualConstraint?.activate() - containerViewBottomLessThanOrEqualConstraint?.activate() } else if let height { let size = ratioSize(for: height) - //enforce exact height/width widthConstraint?.constant = size.width heightConstraint?.constant = size.height widthConstraint?.activate() heightConstraint?.activate() + containerViewCenterXConstraint?.activate() + containerViewLeadingGreaterThanOrEqualConstraint?.activate() containerViewTrailingLessThanOrEqualConstraint?.activate() - containerViewBottomLessThanOrEqualConstraint?.activate() } else { //set to the parent view - containerViewBottomConstraint?.activate() + containerViewLeadingConstraint?.activate() containerViewTrailingConstraint?.activate() }