Updated constraints for NotificationView for layout horizontal
This commit is contained in:
parent
bc25947efa
commit
4f79547bf8
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user