fix: remove useless baseView
This commit is contained in:
parent
7a0747843a
commit
b533eaaae6
|
|
@ -23,7 +23,6 @@
|
|||
import UIKit
|
||||
|
||||
public protocol SkeletonsPresenter {
|
||||
var baseView: UIView? { get }
|
||||
var skeletonsConfiguration: SkeletonsConfiguration { get }
|
||||
var isSkeletonsHidden: Bool { get }
|
||||
var viewsToSkeletone: [UIView] { get }
|
||||
|
|
@ -41,33 +40,11 @@ extension SkeletonsPresenter {
|
|||
public var skeletonsConfiguration: SkeletonsConfiguration {
|
||||
SkeletonsConfiguration()
|
||||
}
|
||||
|
||||
public func showSkeletons() {
|
||||
baseView?.showSkeletons(on: nil,
|
||||
viewsToSkeletone: viewsToSkeletone,
|
||||
skeletonsConfiguration)
|
||||
}
|
||||
|
||||
public func hideSkeletons() {
|
||||
baseView?.hideSkeletons(baseView: nil)
|
||||
}
|
||||
|
||||
public func startAnimation() {
|
||||
baseView?.startAnimation(baseView: nil)
|
||||
}
|
||||
|
||||
public func stopAnimation() {
|
||||
baseView?.stopAnimation(baseView: nil)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - UIView + SkeletonsPresenter
|
||||
|
||||
extension SkeletonsPresenter where Self: UIView {
|
||||
public var baseView: UIView? {
|
||||
self
|
||||
}
|
||||
|
||||
public var isSkeletonsHidden: Bool {
|
||||
(layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil
|
||||
}
|
||||
|
|
@ -75,20 +52,26 @@ extension SkeletonsPresenter where Self: UIView {
|
|||
public var viewsToSkeletone: [UIView] {
|
||||
skeletonableViews
|
||||
}
|
||||
|
||||
public func showSkeletons() {
|
||||
showSkeletons(viewsToSkeletone: viewsToSkeletone,
|
||||
skeletonsConfiguration)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - UIViewController + SkeletonsPresenter
|
||||
|
||||
extension SkeletonsPresenter where Self: UIViewController {
|
||||
public var baseView: UIView? {
|
||||
view
|
||||
}
|
||||
|
||||
public var isSkeletonsHidden: Bool {
|
||||
(view.layer.sublayers ?? []).first { $0 is SkeletonLayer } == nil
|
||||
}
|
||||
|
||||
public var viewsToSkeletone: [UIView] {
|
||||
baseView?.skeletonableViews ?? view.skeletonableViews
|
||||
view.skeletonableViews
|
||||
}
|
||||
|
||||
public func showSkeletons() {
|
||||
showSkeletons(viewsToSkeletone: viewsToSkeletone,
|
||||
skeletonsConfiguration)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,53 +26,51 @@ extension UIView {
|
|||
|
||||
// MARK: - Public methods
|
||||
|
||||
public func showSkeletons(on baseView: UIView?,
|
||||
viewsToSkeletone: [UIView]? = nil,
|
||||
_ config: SkeletonsConfiguration = .init()) {
|
||||
/// Shows skeletons on the view
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - viewsToSkeletone: views that will be converted to skeletones. If nil was passed subviews will be converted to skeletons
|
||||
/// - config: configuration of the skeletons' layers
|
||||
public func showSkeletons(viewsToSkeletone: [UIView]?,
|
||||
_ config: SkeletonsConfiguration) {
|
||||
|
||||
let baseView = baseView ?? self
|
||||
let viewsToSkeletone = viewsToSkeletone ?? skeletonableViews
|
||||
isUserInteractionEnabled = false
|
||||
|
||||
baseView.isUserInteractionEnabled = false
|
||||
subviews.forEach { $0.isHidden = true }
|
||||
|
||||
viewsToSkeletone
|
||||
.flatMap { view in
|
||||
view.isHidden = true
|
||||
|
||||
return getSkeletonLayer(forView: view, baseView: baseView, withConfiguration: config)
|
||||
getSkeletonLayer(forView: view, withConfiguration: config)
|
||||
}
|
||||
.map { layer in
|
||||
layer.startAnimation()
|
||||
|
||||
return layer
|
||||
}
|
||||
.insert(onto: baseView)
|
||||
.insert(onto: self)
|
||||
}
|
||||
|
||||
public func hideSkeletons(baseView: UIView?) {
|
||||
let baseView = baseView ?? self
|
||||
public func hideSkeletons() {
|
||||
isUserInteractionEnabled = true
|
||||
|
||||
baseView.isUserInteractionEnabled = true
|
||||
|
||||
baseView.layer.sublayers?.forEach { layer in
|
||||
layer.sublayers?.forEach { layer in
|
||||
if let layer = layer as? SkeletonLayer {
|
||||
layer.remove(from: baseView)
|
||||
layer.remove(from: self)
|
||||
}
|
||||
}
|
||||
|
||||
baseView.skeletonableViews.forEach {
|
||||
$0.isHidden = false
|
||||
}
|
||||
subviews.forEach { $0.isHidden = false}
|
||||
}
|
||||
|
||||
public func startAnimation(baseView: UIView?) {
|
||||
baseView?.layer.skeletonLayers.forEach { layer in
|
||||
public func startAnimation() {
|
||||
layer.skeletonLayers.forEach { layer in
|
||||
layer.startAnimation()
|
||||
}
|
||||
}
|
||||
|
||||
public func stopAnimation(baseView: UIView?) {
|
||||
baseView?.layer.skeletonLayers.forEach { layer in
|
||||
public func stopAnimation() {
|
||||
layer.skeletonLayers.forEach { layer in
|
||||
layer.stopAnimation()
|
||||
}
|
||||
}
|
||||
|
|
@ -80,10 +78,9 @@ extension UIView {
|
|||
// MARK: - Private methods
|
||||
|
||||
private func getSkeletonLayer(forView view: UIView,
|
||||
baseView: UIView,
|
||||
withConfiguration conf: SkeletonsConfiguration) -> [SkeletonLayer] {
|
||||
|
||||
let skeletonLayer = conf.createSkeletonLayer(for: baseView)
|
||||
let skeletonLayer = conf.createSkeletonLayer(for: self)
|
||||
var subviewSkeletonLayers = [SkeletonLayer]()
|
||||
|
||||
if view.isSkeletonsContainer {
|
||||
|
|
@ -92,7 +89,7 @@ extension UIView {
|
|||
}
|
||||
|
||||
subviewSkeletonLayers = view.skeletonableViews
|
||||
.map { getSkeletonLayer(forView: $0, baseView: baseView, withConfiguration: conf) }
|
||||
.map { getSkeletonLayer(forView: $0, withConfiguration: conf) }
|
||||
.flatMap { $0 }
|
||||
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -23,22 +23,27 @@
|
|||
import UIKit
|
||||
|
||||
extension UIViewController {
|
||||
public func showSkeletons(on baseView: UIView?,
|
||||
viewsToSkeletone: [UIView]? = nil,
|
||||
_ config: SkeletonsConfiguration = .init()) {
|
||||
|
||||
(baseView ?? view).showSkeletons(on: nil, viewsToSkeletone: viewsToSkeletone, config)
|
||||
/// Shows skeletons
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - viewsToSkeletone: views that will be converted to skeletones. If nil was passed subviews of the view will be converted to skeletons
|
||||
/// - config: configuration of the skeletons' layers
|
||||
public func showSkeletons(viewsToSkeletone: [UIView]?,
|
||||
_ config: SkeletonsConfiguration) {
|
||||
|
||||
view.showSkeletons(viewsToSkeletone: viewsToSkeletone, config)
|
||||
}
|
||||
|
||||
public func hideSkeletons(baseView: UIView?) {
|
||||
(baseView ?? view).hideSkeletons(baseView: nil)
|
||||
public func hideSkeletons() {
|
||||
view.hideSkeletons()
|
||||
}
|
||||
|
||||
public func startAnimation(baseView: UIView?) {
|
||||
(baseView ?? view).startAnimation(baseView: nil)
|
||||
public func startAnimation() {
|
||||
view.startAnimation()
|
||||
}
|
||||
|
||||
public func stopAnimation(baseView: UIView?) {
|
||||
(baseView ?? view).stopAnimation(baseView: nil)
|
||||
public func stopAnimation() {
|
||||
view.stopAnimation()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue