diff --git a/VDS/Components/TileContainer/TileContainer.swift b/VDS/Components/TileContainer/TileContainer.swift index 9ae75f5b..0e54bfc1 100644 --- a/VDS/Components/TileContainer/TileContainer.swift +++ b/VDS/Components/TileContainer/TileContainer.swift @@ -12,6 +12,24 @@ import UIKit @objc(VDSTileContainer) open class TileContainer: Control { + //-------------------------------------------------- + // MARK: - Initializers + //-------------------------------------------------- + required public init() { + super.init(frame: .zero) + initialSetup() + } + + public override init(frame: CGRect) { + super.init(frame: .zero) + initialSetup() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + initialSetup() + } + public enum ContainerBackgroundColor: String, CaseIterable { case white case black @@ -96,22 +114,18 @@ open class TileContainer: Control { return 48.0 } } + //-------------------------------------------------- // MARK: - Constraints //-------------------------------------------------- - private lazy var widthConstraint: NSLayoutConstraint = { - let constraint = widthAnchor.constraint(equalToConstant: width) - constraint.isActive = true - return constraint - }() - - private lazy var heightConstraint: NSLayoutConstraint = { - let constraint = heightAnchor.constraint(equalToConstant: 100) - constraint.isActive = true - return constraint - }() - + private var widthConstraint: NSLayoutConstraint? + private var heightConstraint: NSLayoutConstraint? + internal var containerTopConstraint: NSLayoutConstraint? + internal var containerBottomConstraint: NSLayoutConstraint? + internal var containerLeadingConstraint: NSLayoutConstraint? + internal var containerTrailingConstraint: NSLayoutConstraint? + //functions //-------------------------------------------------- // MARK: - Lifecycle @@ -122,13 +136,28 @@ open class TileContainer: Control { addSubview(backgroundImageView) addSubview(containerView) addSubview(highlightView) + + widthConstraint = widthAnchor.constraint(equalToConstant: width) + widthConstraint?.isActive = true + + heightConstraint = heightAnchor.constraint(equalToConstant: width) + heightConstraint?.isActive = true + backgroundImageView.pinToSuperView() backgroundImageView.isUserInteractionEnabled = false backgroundImageView.isHidden = true - containerView.pinToSuperView() containerView.isUserInteractionEnabled = false containerView.backgroundColor = .clear + + containerTopConstraint = containerView.topAnchor.constraint(lessThanOrEqualTo: topAnchor, constant: padding) + containerTopConstraint?.isActive = true + containerBottomConstraint = containerView.bottomAnchor.constraint(lessThanOrEqualTo: bottomAnchor, constant: padding) + containerBottomConstraint?.isActive = true + containerLeadingConstraint = containerView.leadingAnchor.constraint(lessThanOrEqualTo: leadingAnchor, constant: padding) + containerLeadingConstraint?.isActive = true + containerTrailingConstraint = containerView.trailingAnchor.constraint(lessThanOrEqualTo: trailingAnchor, constant: padding) + containerTrailingConstraint?.isActive = true highlightView.pinToSuperView() highlightView.isUserInteractionEnabled = false @@ -138,6 +167,7 @@ open class TileContainer: Control { //corner radius layer.cornerRadius = cornerRadius backgroundImageView.layer.cornerRadius = 8 + highlightView.layer.cornerRadius = 8 } @@ -215,16 +245,19 @@ open class TileContainer: Control { layer.borderColor = borderColorConfig.getColor(self).cgColor layer.borderWidth = showBorder ? 1 : 0 - - containerView.layoutMargins = UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding) - + + containerTopConstraint?.constant = padding + containerLeadingConstraint?.constant = padding + containerBottomConstraint?.constant = -padding + containerTrailingConstraint?.constant = -padding + if let height { - widthConstraint.constant = width - heightConstraint.constant = height + widthConstraint?.constant = width + heightConstraint?.constant = height } else { let size = ratioSize - widthConstraint.constant = size.width - heightConstraint.constant = size.height + widthConstraint?.constant = size.width + heightConstraint?.constant = size.height } }