initial
This commit is contained in:
106
Pods/SwiftEntryKit/Source/MessageViews/EKPopUpMessageView.swift
generated
Normal file
106
Pods/SwiftEntryKit/Source/MessageViews/EKPopUpMessageView.swift
generated
Normal file
@@ -0,0 +1,106 @@
|
||||
//
|
||||
// EKPopUpMessageView.swift
|
||||
// SwiftEntryKit
|
||||
//
|
||||
// Created by Daniel Huri on 4/20/18.
|
||||
// Copyright (c) 2018 huri000@gmail.com. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
final public class EKPopUpMessageView: UIView {
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
private var imageView: UIImageView!
|
||||
private let titleLabel = UILabel()
|
||||
private let descriptionLabel = UILabel()
|
||||
private let actionButton = UIButton()
|
||||
|
||||
private let message: EKPopUpMessage
|
||||
|
||||
// MARK: - Setup
|
||||
|
||||
public init(with message: EKPopUpMessage) {
|
||||
self.message = message
|
||||
super.init(frame: UIScreen.main.bounds)
|
||||
setupImageView()
|
||||
setupTitleLabel()
|
||||
setupDescriptionLabel()
|
||||
setupActionButton()
|
||||
setupInterfaceStyle()
|
||||
}
|
||||
|
||||
public required init?(coder aDecoder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
private func setupImageView() {
|
||||
guard let themeImage = message.themeImage else {
|
||||
return
|
||||
}
|
||||
imageView = UIImageView()
|
||||
addSubview(imageView)
|
||||
imageView.layoutToSuperview(.centerX)
|
||||
switch themeImage.position {
|
||||
case .centerToTop(offset: let value):
|
||||
imageView.layout(.centerY, to: .top, of: self, offset: value)
|
||||
case .topToTop(offset: let value):
|
||||
imageView.layoutToSuperview(.top, offset: value)
|
||||
}
|
||||
imageView.imageContent = themeImage.image
|
||||
}
|
||||
|
||||
private func setupTitleLabel() {
|
||||
addSubview(titleLabel)
|
||||
titleLabel.content = message.title
|
||||
titleLabel.layoutToSuperview(axis: .horizontally, offset: 30)
|
||||
if let imageView = imageView {
|
||||
titleLabel.layout(.top, to: .bottom, of: imageView, offset: 20)
|
||||
} else {
|
||||
titleLabel.layoutToSuperview(.top, offset: 20)
|
||||
}
|
||||
titleLabel.forceContentWrap(.vertically)
|
||||
}
|
||||
|
||||
private func setupDescriptionLabel() {
|
||||
addSubview(descriptionLabel)
|
||||
descriptionLabel.content = message.description
|
||||
descriptionLabel.layoutToSuperview(axis: .horizontally, offset: 30)
|
||||
descriptionLabel.layout(.top, to: .bottom, of: titleLabel, offset: 16)
|
||||
descriptionLabel.forceContentWrap(.vertically)
|
||||
}
|
||||
|
||||
private func setupActionButton() {
|
||||
addSubview(actionButton)
|
||||
let height: CGFloat = 45
|
||||
actionButton.set(.height, of: height)
|
||||
actionButton.layout(.top, to: .bottom, of: descriptionLabel, offset: 30)
|
||||
actionButton.layoutToSuperview(.bottom, offset: -30)
|
||||
actionButton.layoutToSuperview(.centerX)
|
||||
|
||||
let buttonAttributes = message.button
|
||||
actionButton.buttonContent = buttonAttributes
|
||||
actionButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 30, bottom: 0, right: 30)
|
||||
actionButton.layer.cornerRadius = height * 0.5
|
||||
actionButton.addTarget(self, action: #selector(actionButtonPressed), for: .touchUpInside)
|
||||
}
|
||||
|
||||
private func setupInterfaceStyle() {
|
||||
titleLabel.textColor = message.title.style.color(for: traitCollection)
|
||||
imageView?.tintColor = message.themeImage?.image.tintColor(for: traitCollection)
|
||||
let tapColor = message.button.highlighedLabelColor(for: traitCollection)
|
||||
actionButton.setTitleColor(tapColor, for: .highlighted)
|
||||
actionButton.setTitleColor(tapColor, for: .selected)
|
||||
}
|
||||
|
||||
public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||
setupInterfaceStyle()
|
||||
}
|
||||
|
||||
// MARK: - User Interaction
|
||||
|
||||
@objc func actionButtonPressed() {
|
||||
message.action()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user