initial
This commit is contained in:
62
Pods/SwiftEntryKit/Source/MessageViews/MessagesUtils/EKRatingSymbolsContainerView.swift
generated
Normal file
62
Pods/SwiftEntryKit/Source/MessageViews/MessagesUtils/EKRatingSymbolsContainerView.swift
generated
Normal file
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// EKRatingSymbolsContainerView.swift
|
||||
// SwiftEntryKit
|
||||
//
|
||||
// Created by Daniel Huri on 6/1/18.
|
||||
// Copyright (c) 2018 huri000@gmail.com. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
final public class EKRatingSymbolsContainerView: UIView {
|
||||
|
||||
private var message: EKRatingMessage!
|
||||
private var symbolsArray: [EKRatingSymbolView] = []
|
||||
|
||||
public func setup(with message: EKRatingMessage,
|
||||
externalSelection: @escaping EKRatingMessage.Selection) {
|
||||
self.message = message
|
||||
let internalSelection = { [unowned self] (index: Int) in
|
||||
self.select(index: index)
|
||||
externalSelection(index)
|
||||
}
|
||||
|
||||
for (index, item) in message.ratingItems.enumerated() {
|
||||
let itemView = EKRatingSymbolView(unselectedImage: item.unselectedImage,
|
||||
selectedImage: item.selectedImage,
|
||||
selection: internalSelection)
|
||||
itemView.tag = index
|
||||
addSubview(itemView)
|
||||
itemView.set(.height, of: item.size.height)
|
||||
itemView.set(.width, of: item.size.width)
|
||||
symbolsArray.append(itemView)
|
||||
}
|
||||
symbolsArray.layoutToSuperview(axis: .vertically, priority: .must)
|
||||
symbolsArray.spread(.horizontally, stretchEdgesToSuperview: true)
|
||||
|
||||
select(index: message.selectedIndex)
|
||||
}
|
||||
|
||||
private func select(index: Int? = nil) {
|
||||
var delay: TimeInterval = 0
|
||||
for (i, view) in symbolsArray.enumerated() {
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
|
||||
if let index = index, i <= index {
|
||||
view.isSelected = true
|
||||
view.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
|
||||
} else if view.isSelected || index == nil {
|
||||
view.isSelected = false
|
||||
view.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
|
||||
}
|
||||
UIView.animate(withDuration: 0.6,
|
||||
delay: 0,
|
||||
usingSpringWithDamping: 0.5,
|
||||
initialSpringVelocity: 0,
|
||||
options: [.allowUserInteraction], animations: {
|
||||
view.transform = .identity
|
||||
}, completion: nil)
|
||||
}
|
||||
delay += 0.05
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user