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)