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 动画上,默认的 activityIndi​​cator 看起来很流畅。

通过将滚动视图顶部约束从安全区域更改为超级视图,Lottie 动画问题已得到解决。虽然我之前使用默认的 activity 指示器实现了这个解决方案,但是当我将 lottie 动画添加到 uirefreshcontrol 时它以某种方式变回了安全区域。

我在 Whosebug 上找到的原始答案: