如何在视图层次结构中调整UIRefreshControl的位置?

时间:2015-09-10 05:20:21

标签: ios xcode swift uicollectionview uirefreshcontrol

我有一个自定义UIRefreshControl“拉动刷新”,出于某种原因,当我开始滚动时,视图出现在所有其他视图之上,而不是逐渐显示自己,因为滚动被拖下来..这就是我的意思:

enter image description here

现在我试图通过在viewDidLoad中清除背景和色调来尝试修补它:

    var refreshControl: UIRefreshControl!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        refreshControl = UIRefreshControl()
        refreshControl.backgroundColor = UIColor.clearColor()
        refreshControl.tintColor = UIColor.clearColor()
        collectionView?.addSubview(refreshControl)

    }

虽然这确实解决了刷新问题,但无论其透明度如何,刷新控件仍然位于我的视图层次结构之上,你可以看到当我发布滚动时,字母仍悬在虽然它确实隐藏了视图,但当你开始拖动滚动时,它会很快出现故障,再次显示视图:

enter image description here

现在我甚至尝试调用sendSubviewToBackinsertSubview:aboveSubview:方法,但它们没有做任何事情。请记住,这是一个collectionViewController而不是顶部有collectionView的UIViewController,所以我想在顶视图后面没有一个视图,我可以向后面发送一些东西..但是有什么逻辑可以实现,它会在滚动开始时调整视图边界?

1 个答案:

答案 0 :(得分:1)

试试这个:

refreshControl.layer.zPosition = -1

另外,请谨慎使用UIRefreshControl而不将其附加到实际的UITableViewController。您可能会看到奇怪的工件,如口吃(即使将其附加到UITableView也会导致错误)。见:

UIRefreshControl without UITableViewController