tigerAndBull / TABAnimated

A skeleton screen loading framework based on native for iOS. (一个由iOS原生组件映射出骨架屏的框架,包含快速植入,低耦合,兼容复杂视图等特点,提供国内主流骨架屏动画的加载方案,同时支持上拉加载更多、自定制动画。)
MIT License
3.37k stars 536 forks source link

completion问题 #193

Closed Coder-Star closed 2 years ago

Coder-Star commented 2 years ago

New Issue Checklist

这个位置建议也执行一下completion闭包,否则依赖于闭包返回结果的逻辑就会出现问题

image

tigerAndBull commented 2 years ago

理论上这里应该加断言,后来去掉了,未启动不应该走到这个方法里,否则认为使用逻辑有问题

Coder-Star commented 2 years ago

理论上这里应该加断言,后来去掉了,未启动不应该走到这个方法里,否则认为使用逻辑有问题

Coder-Star commented 2 years ago

理论上这里应该加断言,后来去掉了,未启动不应该走到这个方法里,否则认为使用逻辑有问题

func doSomthing() {
   tableView.tab_startAnimation(withDelayTime: 0.2) { [weak self] in
            guard let self = self else { return }
            self.getData()
        }
}

比如这种情况,调用doSomthing多次,比如第一次的动画还未执行完毕,就会导致后面的调用闭包内的逻辑不会执行

tigerAndBull commented 2 years ago

骨架屏的状态流转是根据业务方自行控制的, 和获取数据的逻辑不需要强行耦合在一起。你应该将骨架屏启动逻辑拆出来,根据数据本身得到的参数决定是否结束/重新启动骨架屏。