initial
This commit is contained in:
110
Pods/SwiftEntryKit/Source/MessageViews/EKRatingMessageView.swift
generated
Normal file
110
Pods/SwiftEntryKit/Source/MessageViews/EKRatingMessageView.swift
generated
Normal file
@@ -0,0 +1,110 @@
|
||||
//
|
||||
// EKRatingMessageView.swift
|
||||
// SwiftEntryKit
|
||||
//
|
||||
// Created by Daniel Huri on 6/1/18.
|
||||
// Copyright (c) 2018 huri000@gmail.com. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
final public class EKRatingMessageView: UIView, EntryAppearanceDescriptor {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
private var message: EKRatingMessage
|
||||
|
||||
// MARK: EntryAppearenceDescriptor
|
||||
|
||||
var bottomCornerRadius: CGFloat = 0 {
|
||||
didSet {
|
||||
buttonBarView.bottomCornerRadius = bottomCornerRadius
|
||||
}
|
||||
}
|
||||
|
||||
private var selectedIndex: Int! {
|
||||
didSet {
|
||||
message.selectedIndex = selectedIndex
|
||||
let item = message.ratingItems[selectedIndex]
|
||||
set(title: item.title,
|
||||
description: item.description)
|
||||
}
|
||||
}
|
||||
|
||||
private let messageContentView = EKMessageContentView()
|
||||
private let symbolsView = EKRatingSymbolsContainerView()
|
||||
private var buttonBarView: EKButtonBarView!
|
||||
|
||||
public init(with message: EKRatingMessage) {
|
||||
self.message = message
|
||||
super.init(frame: UIScreen.main.bounds)
|
||||
setupMessageContentView()
|
||||
setupSymbolsView()
|
||||
setupButtonBarView()
|
||||
set(title: message.initialTitle,
|
||||
description: message.initialDescription)
|
||||
}
|
||||
|
||||
required public init?(coder aDecoder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
private func set(title: EKProperty.LabelContent,
|
||||
description: EKProperty.LabelContent) {
|
||||
messageContentView.titleContent = title
|
||||
messageContentView.subtitleContent = description
|
||||
UIView.animate(withDuration: 0.4,
|
||||
delay: 0,
|
||||
usingSpringWithDamping: 1,
|
||||
initialSpringVelocity: 0,
|
||||
options: [.transitionCrossDissolve],
|
||||
animations: {
|
||||
SwiftEntryKit.layoutIfNeeded()
|
||||
}, completion: nil)
|
||||
}
|
||||
|
||||
private func setupMessageContentView() {
|
||||
addSubview(messageContentView)
|
||||
messageContentView.verticalMargins = 20
|
||||
messageContentView.horizontalMargins = 30
|
||||
messageContentView.layoutToSuperview(axis: .horizontally,
|
||||
priority: .must)
|
||||
messageContentView.layoutToSuperview(.top, offset: 10)
|
||||
}
|
||||
|
||||
private func setupSymbolsView() {
|
||||
addSubview(symbolsView)
|
||||
symbolsView.setup(with: message) { [unowned self] (index: Int) in
|
||||
self.message.selectedIndex = index
|
||||
self.message.selection?(index)
|
||||
self.selectedIndex = index
|
||||
self.animateIn()
|
||||
}
|
||||
symbolsView.layoutToSuperview(.centerX)
|
||||
symbolsView.layout(.top,
|
||||
to: .bottom,
|
||||
of: messageContentView,
|
||||
offset: 10,
|
||||
priority: .must)
|
||||
}
|
||||
|
||||
private func setupButtonBarView() {
|
||||
buttonBarView = EKButtonBarView(with: message.buttonBarContent)
|
||||
buttonBarView.clipsToBounds = true
|
||||
buttonBarView.alpha = 0
|
||||
addSubview(buttonBarView)
|
||||
buttonBarView.layout(.top,
|
||||
to: .bottom,
|
||||
of: symbolsView,
|
||||
offset: 30)
|
||||
buttonBarView.layoutToSuperview(.bottom)
|
||||
buttonBarView.layoutToSuperview(axis: .horizontally)
|
||||
}
|
||||
|
||||
// MARK: - Internal Animation
|
||||
|
||||
private func animateIn() {
|
||||
layoutIfNeeded()
|
||||
buttonBarView.expand()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user