Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uitableview UIScrollView中具有左/右内容插入的UIRefreshControl布局错误_Uitableview_Uiscrollview_Uicollectionview_Uikit_Uirefreshcontrol - Fatal编程技术网

Uitableview UIScrollView中具有左/右内容插入的UIRefreshControl布局错误

Uitableview UIScrollView中具有左/右内容插入的UIRefreshControl布局错误,uitableview,uiscrollview,uicollectionview,uikit,uirefreshcontrol,Uitableview,Uiscrollview,Uicollectionview,Uikit,Uirefreshcontrol,如果我使用的UIScrollView具有非零左/右contentInset并添加了UIRefreshControl,则刷新位置不正确,使UI和动画看起来很奇怪 scrollView.contentInset=UIEdgeInSet(顶部:0,左侧:40,底部:0,右侧:40) scrollView.refreshControl=UIRefreshControl() 我不想破坏刷新控件的布局,但找不到正确定位的方法 以下是该漏洞的截图: 下面是来自视图检查器的动画: 我通过创建UIRefres

如果我使用的
UIScrollView
具有非零左/右
contentInset
并添加了
UIRefreshControl
,则刷新位置不正确,使UI和动画看起来很奇怪

scrollView.contentInset=UIEdgeInSet(顶部:0,左侧:40,底部:0,右侧:40)
scrollView.refreshControl=UIRefreshControl()
我不想破坏刷新控件的布局,但找不到正确定位的方法

以下是该漏洞的截图:

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


我通过创建
UIRefreshControl
子类在本地修复了它,但这绝对是一个黑客行为

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中的一个错误。

如果控制台上没有约束错误,那么scrollview上是否会缺少约束错误?看起来refreshControl保持故事板的大小。那里也有单元格吗?因为它看起来可能偏离了视图的右侧。您能否松开视图以确保滚动视图的位置正确?“调试代码层次结构底部的一个图标就是这样做的。@Eric此演示使用的是自动布局,但我可以使用纯框架数学对其进行完全相同的重新编程。@KyleBashour scrollview中没有子视图:(啊,我的错误。奇怪的是UIRefreshControl文档仍然有这样的警告,因为刷新控件是滚动视图的子视图,我实际上不认为您关心滚动视图的框架:
newFrame.origin.x=-superScrollView.contentInset.left
在我看来,它会更好:newFrame.origin.y=newValue.minY-(superScrollView.contentInset.top/2)