Skip to content

Instantly share code, notes, and snippets.

@gunantosteven
Last active May 9, 2020 16:00
Show Gist options
  • Save gunantosteven/6f79105f913006a7c5623f767968753d to your computer and use it in GitHub Desktop.
Save gunantosteven/6f79105f913006a7c5623f767968753d to your computer and use it in GitHub Desktop.
Implement SkeletonView in iOS Swift 5
import SkeletonView
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomeCategoryTableViewCell",
for: indexPath) as? HomeCategoryTableViewCell
return cell
}
extension ViewController: SkeletonTableViewDataSource {
func collectionSkeletonView(_ skeletonView: UITableView, cellIdentifierForRowAt indexPath: IndexPath) -> ReusableCellIdentifier {
return "HomeCategoryTableViewCell"
}
}
// HomeCategoryTableViewCell
override func awakeFromNib() {
super.awakeFromNib()
for index in 0..<viewParent.count {
self.imageViewDogs[index].isSkeletonable = true
self.labelBreeds[index].isSkeletonable = true
}
}
override func layoutSubviews() {
super.layoutSubviews()
loadAPI()
}
func loadAPI() {
if self.homeViewModel?.categoriesDog == nil {
setSkeletonHidden(hidden: true) // Show skeleton before load API
homeViewModel?.getCategoriesDog { [weak self] in
guard let self = self else { return }
self.setSkeletonHidden(hidden: false) // Hide skeleton after load API
}
}
}
func setSkeletonHidden(hidden: Bool) {
for index in 0..<viewParent.count {
if hidden {
self.imageViewDogs[index].showAnimatedSkeleton()
self.labelBreeds[index].showAnimatedSkeleton()
} else {
self.imageViewDogs[index].hideSkeleton()
self.labelBreeds[index].hideSkeleton()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment