UIScrollView 中的 UIRefreshControl 布局错误 left/right contentInset

UIRefreshControl layout wrong in UIScrollView with left/right contentInset

如果我使用 UIScrollView 和非零 left/right contentInset 并添加 UIRefreshControl,刷新定位不正确,使 UI 动画看起来很奇怪。

scrollView.contentInset = UIEdgeInsets(top: 0, left: 40, bottom: 0, right: 40)
scrollView.refreshControl = UIRefreshControl()

我不想修改刷新控件的布局,但找不到正确定位它的方法。

这是错误的屏幕截图:

这是来自视图检查器的动画:

我通过创建 UIRefreshControl 子类在本地修复了它,但这绝对是 hack。

override var frame: CGRect {
    get { return super.frame }
    set {
        var newFrame = newValue
        if let superScrollView = superview as? UIScrollView {
            newFrame.origin.x = superScrollView.frame.minX - superScrollView.contentInset.left
        }
        super.frame = newFrame
    }
}

我会提交雷达,因为我开始认为这是 UIKit 中的错误。