Files
OrderScheduling/Pods/SwiftEntryKit/Source/MessageViews/EKAlertMessageView.swift
DDIsFriend f0e8a1709d initial
2023-08-18 17:28:57 +08:00

91 lines
3.1 KiB
Swift

//
// EKAlertMessageView.swift
// SwiftEntryKit
//
// Created by Daniel Huri on 5/5/18.
//
import UIKit
final public class EKAlertMessageView: EKSimpleMessageView, EntryAppearanceDescriptor {
// MARK: Props
var buttonBarView: EKButtonBarView!
private var buttonsBarCompressedConstraint: NSLayoutConstraint!
private var buttonsBarExpandedConstraint: NSLayoutConstraint!
// MARK: EntryAppearenceDescriptor
var bottomCornerRadius: CGFloat = 0 {
didSet {
buttonBarView.bottomCornerRadius = bottomCornerRadius
}
}
// MARK: Setup
public init(with message: EKAlertMessage) {
super.init(with: message.simpleMessage)
setupButtonBarView(with: message.buttonBarContent)
layoutContent(with: message)
}
public required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupButtonBarView(with content: EKProperty.ButtonBarContent) {
buttonBarView = EKButtonBarView(with: content)
buttonBarView.clipsToBounds = true
addSubview(buttonBarView)
}
func layoutContent(with message: EKAlertMessage) {
switch message.imagePosition {
case .top:
messageContentView.verticalMargins = 16
messageContentView.horizontalMargins = 16
messageContentView.labelsOffset = 5
if let thumbImageView = thumbImageView {
thumbImageView.layoutToSuperview(.top, offset: 20)
thumbImageView.layoutToSuperview(.centerX)
messageContentView.layout(.top, to: .bottom, of: thumbImageView)
} else {
messageContentView.layoutToSuperview(.top)
}
messageContentView.layoutToSuperview(axis: .horizontally)
buttonBarView.layout(.top, to: .bottom, of: messageContentView)
case .left:
messageContentView.verticalMargins = 0
messageContentView.horizontalMargins = 0
messageContentView.labelsOffset = 5
if let thumbImageView = thumbImageView {
thumbImageView.layoutToSuperview(.top, .left, offset: 16)
messageContentView.layout(.left, to: .right, of: thumbImageView, offset: 12)
messageContentView.layout(to: .top, of: thumbImageView, offset: 2)
} else {
messageContentView.layoutToSuperview(.left, .top, offset: 16)
}
messageContentView.layoutToSuperview(.right, offset: -16)
buttonBarView.layout(.top, to: .bottom, of: messageContentView, offset: 10)
}
buttonBarView.layoutToSuperview(axis: .horizontally)
buttonBarView.layoutToSuperview(.bottom)
buttonBarView.alpha = 0
if !message.buttonBarContent.content.isEmpty {
if message.buttonBarContent.expandAnimatedly {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.buttonBarView.expand()
}
} else {
buttonBarView.expand()
}
}
}
}