Files
Tom Cheung 969f068480 Bugfix/tableview insetgrouped (#494)
* Fixed TableView skeleton cannot hide if style is insetGrouped

* Fixed show skeleton button not visible

* Update the fix base on PR comments
2022-08-16 10:35:13 +02:00

69 lines
1.5 KiB
Swift

// Copyright © 2018 SkeletonView. All rights reserved.
import UIKit
extension UIView {
@objc var subviewsSkeletonables: [UIView] {
subviewsToSkeleton.filter { $0.isSkeletonable }
}
@objc var subviewsToSkeleton: [UIView] {
subviews
}
}
extension UITableView {
override var subviewsToSkeleton: [UIView] {
// on `UIViewController'S onViewDidLoad`, the window is still nil.
// Some developer trying to call `view.showAnimatedSkeleton()`
// when the request or data is loading which sometimes happens before the ViewDidAppear
guard window != nil else { return [] }
var result = [UIView]()
for subview in subviews {
if String(describing: type(of: subview)) == "UITableViewWrapperView" {
result.append(contentsOf: subview.subviews)
} else {
result.append(subview)
}
}
return result
}
}
extension UITableViewCell {
override var subviewsToSkeleton: [UIView] {
contentView.subviews
}
}
extension UITableViewHeaderFooterView {
override var subviewsToSkeleton: [UIView] {
contentView.subviews
}
}
extension UICollectionView {
override var subviewsToSkeleton: [UIView] {
subviews
}
}
extension UICollectionViewCell {
override var subviewsToSkeleton: [UIView] {
contentView.subviews
}
}
extension UIStackView {
override var subviewsToSkeleton: [UIView] {
arrangedSubviews
}
}