// // 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() } } } }