Updated constraints for NotificationView for layout horizontal

This commit is contained in:
Krishna Kishore Bandaru 2024-02-07 20:14:43 +05:30
parent bc25947efa
commit 4f79547bf8

View File

@ -69,17 +69,25 @@ open class Notification: View {
} }
private var labelsView = UIStackView().with { private var labelsView = UIStackView().with {
$0.spacing = 1.0
$0.translatesAutoresizingMaskIntoConstraints = false $0.translatesAutoresizingMaskIntoConstraints = false
$0.alignment = .top $0.alignment = .fill
$0.distribution = .equalSpacing
$0.axis = .vertical $0.axis = .vertical
} }
private var labelButtonView = UIStackView().with { private var labelButtonView = View().with {
$0.translatesAutoresizingMaskIntoConstraints = false $0.translatesAutoresizingMaskIntoConstraints = false
$0.alignment = .top }
$0.distribution = .fillEqually
$0.axis = .vertical private var labelButtonViewSpacing: CGFloat {
$0.spacing = VDSLayout.Spacing.space2X.value let spacing: CGFloat = UIDevice.isIPad ? 20 : 16
return switch layout {
case .vertical:
0
case .horizontal:
spacing
}
} }
internal var onCloseSubscriber: AnyCancellable? internal var onCloseSubscriber: AnyCancellable?
@ -215,6 +223,15 @@ open class Notification: View {
return 1232 return 1232
} }
private var labelViewWidthConstraint: NSLayoutConstraint?
private var labelViewBottomConstraint: NSLayoutConstraint?
private var labelViewAndButtonViewConstraint: NSLayoutConstraint?
private var buttonViewTopConstraint: NSLayoutConstraint?
private var typeIconWidthConstraint: NSLayoutConstraint?
private var closeIconWidthConstraint: NSLayoutConstraint?
private var buttonGroupCenterYConstraint: NSLayoutConstraint?
private var buttonGroupBottomConstraint: NSLayoutConstraint?
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Overrides // MARK: - Overrides
//-------------------------------------------------- //--------------------------------------------------
@ -240,12 +257,29 @@ open class Notification: View {
]) ])
maxWidthConstraint = layoutGuide.widthAnchor.constraint(lessThanOrEqualToConstant: maxViewWidth) maxWidthConstraint = layoutGuide.widthAnchor.constraint(lessThanOrEqualToConstant: maxViewWidth)
labelButtonView.addArrangedSubview(labelsView) labelButtonView.addSubview(labelsView)
labelsView
.pinTop()
.pinLeading()
labelViewWidthConstraint = labelsView.widthAnchor.constraint(equalTo: labelButtonView.widthAnchor, multiplier: 1.0)
labelViewWidthConstraint?.activate()
labelViewBottomConstraint = labelButtonView.bottomAnchor.constraint(equalTo: labelsView.bottomAnchor)
labelButtonView.addSubview(buttonGroup)
buttonGroup
.pinTrailing()
buttonGroupBottomConstraint = labelButtonView.bottomAnchor.constraint(equalTo: buttonGroup.bottomAnchor)
buttonGroupCenterYConstraint = buttonGroup.centerYAnchor.constraint(equalTo: labelButtonView.centerYAnchor)
labelViewAndButtonViewConstraint = buttonGroup.topAnchor.constraint(equalTo: labelsView.bottomAnchor, constant: 3.0)
buttonGroup.widthAnchor.constraint(equalTo: labelsView.widthAnchor).activate()
mainStackView.addArrangedSubview(typeIcon) mainStackView.addArrangedSubview(typeIcon)
mainStackView.addArrangedSubview(labelButtonView) mainStackView.addArrangedSubview(labelButtonView)
mainStackView.addArrangedSubview(closeButton) mainStackView.addArrangedSubview(closeButton)
typeIconWidthConstraint = typeIcon.width(constant: typeIcon.size.dimensions.width)
closeIconWidthConstraint = closeButton.width(constant: closeButton.size.dimensions.width)
//labels //labels
titleLabel.textColorConfiguration = textColorConfiguration.eraseToAnyColorable() titleLabel.textColorConfiguration = textColorConfiguration.eraseToAnyColorable()
subTitleLabel.textColorConfiguration = textColorConfiguration.eraseToAnyColorable() subTitleLabel.textColorConfiguration = textColorConfiguration.eraseToAnyColorable()
@ -342,28 +376,28 @@ open class Notification: View {
secondaryButton.onClick = secondaryButtonModel.onClick secondaryButton.onClick = secondaryButtonModel.onClick
buttons.append(secondaryButton) buttons.append(secondaryButton)
} }
labelViewWidthConstraint?.deactivate()
if buttons.isEmpty { if buttons.isEmpty {
labelsView.setCustomSpacing(0, after: subTitleLabel) buttonGroup.isHidden = true
buttonGroup.removeFromSuperview() labelViewWidthConstraint = labelsView.widthAnchor.constraint(equalTo: labelButtonView.widthAnchor)
buttonGroup.buttons.removeAll()
} else { } else {
labelsView.setCustomSpacing(VDSLayout.Spacing.space3X.value, after: subTitleLabel) labelsView.setCustomSpacing(VDSLayout.Spacing.space3X.value, after: subTitleLabel)
buttonGroup.buttons = buttons buttonGroup.buttons = buttons
labelButtonView.axis = layout == .vertical ? .vertical : .horizontal buttonGroup.isHidden = false
labelButtonView.addArrangedSubview(buttonGroup) labelViewWidthConstraint = labelsView.widthAnchor.constraint(equalTo: labelButtonView.widthAnchor, multiplier: layout == .vertical ? 1.0 : 0.5, constant: layout == .vertical ? 0 : -labelButtonViewSpacing)
buttonGroup
.pinLeading()
.pinTrailing()
} }
labelViewWidthConstraint?.activate()
} }
private func setConstraints() { private func setConstraints() {
maxWidthConstraint?.constant = maxViewWidth maxWidthConstraint?.constant = maxViewWidth
maxWidthConstraint?.isActive = UIDevice.isIPad maxWidthConstraint?.isActive = UIDevice.isIPad
labelViewAndButtonViewConstraint?.isActive = layout == .vertical && !buttonGroup.buttons.isEmpty
typeIconWidthConstraint?.constant = typeIcon.size.dimensions.width
closeIconWidthConstraint?.constant = closeButton.size.dimensions.width
labelViewBottomConstraint?.isActive = layout == .horizontal || buttonGroup.buttons.isEmpty
buttonGroupCenterYConstraint?.isActive = layout == .horizontal
buttonGroupBottomConstraint?.isActive = layout == .vertical
} }
} }