Swift 中 UIRefreshControl 子视图中的 Lottie 动画故障
Lottie Animation glitching in UIRefreshControl subview in Swift
我正在尝试在 scrollview.refreshControl 的子视图中加载一个 Lottie 动画,该动画出现在拉动刷新时出现故障,这使得动画看起来不流畅并且看起来有很多错误。
我在 viewDidLoad 中使用的代码:
let loadingView : AnimationView = {
let view = AnimationView()
view.translatesAutoresizingMaskIntoConstraints = false
view.animation = Animation.named("loading-dots-blue")
view.loopMode = .loop
view.contentMode = .scaleAspectFill
view.play()
return view
}()
scrollView.refreshControl = UIRefreshControl()
scrollView.refreshControl?.addTarget(self, action: #selector(self.refresh(_:)), for: .valueChanged)
scrollView.refreshControl!.addSubview(loadingView)
scrollView.refreshControl?.tintColor = .clear
loadingView.centerXAnchor.constraint(equalTo: scrollView.refreshControl!.centerXAnchor).isActive = true
loadingView.centerYAnchor.constraint(equalTo: scrollView.refreshControl!.centerYAnchor).isActive = true
loadingView.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.width/2).isActive = true
loadingView.heightAnchor.constraint(equalToConstant: 50).isActive = true
这只发生在 lottie 动画上,默认的 activityIndicator 看起来很流畅。
通过将滚动视图顶部约束从安全区域更改为超级视图,Lottie 动画问题已得到解决。虽然我之前使用默认的 activity 指示器实现了这个解决方案,但是当我将 lottie 动画添加到 uirefreshcontrol 时它以某种方式变回了安全区域。
我在 Whosebug 上找到的原始答案:
我正在尝试在 scrollview.refreshControl 的子视图中加载一个 Lottie 动画,该动画出现在拉动刷新时出现故障,这使得动画看起来不流畅并且看起来有很多错误。
我在 viewDidLoad 中使用的代码:
let loadingView : AnimationView = {
let view = AnimationView()
view.translatesAutoresizingMaskIntoConstraints = false
view.animation = Animation.named("loading-dots-blue")
view.loopMode = .loop
view.contentMode = .scaleAspectFill
view.play()
return view
}()
scrollView.refreshControl = UIRefreshControl()
scrollView.refreshControl?.addTarget(self, action: #selector(self.refresh(_:)), for: .valueChanged)
scrollView.refreshControl!.addSubview(loadingView)
scrollView.refreshControl?.tintColor = .clear
loadingView.centerXAnchor.constraint(equalTo: scrollView.refreshControl!.centerXAnchor).isActive = true
loadingView.centerYAnchor.constraint(equalTo: scrollView.refreshControl!.centerYAnchor).isActive = true
loadingView.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.width/2).isActive = true
loadingView.heightAnchor.constraint(equalToConstant: 50).isActive = true
这只发生在 lottie 动画上,默认的 activityIndicator 看起来很流畅。
通过将滚动视图顶部约束从安全区域更改为超级视图,Lottie 动画问题已得到解决。虽然我之前使用默认的 activity 指示器实现了这个解决方案,但是当我将 lottie 动画添加到 uirefreshcontrol 时它以某种方式变回了安全区域。
我在 Whosebug 上找到的原始答案: