Ios UIC控件正在闪烁,并且转换是突然的

Ios UIC控件正在闪烁,并且转换是突然的,ios,swift,xcode,uirefreshcontrol,Ios,Swift,Xcode,Uirefreshcontrol,我想在我的应用程序的主表视图控制器中设置一个UIRefreshControl来触发一个刷新函数(你现在可能已经猜到了)刷新它 添加它不是问题,我可以通过情节提要(通过启用刷新)或控制器(通过使用self.refreshControl=UIRefreshControl())进行设置 当用户触发该控件时,它会开始正常刷新,但当我通过self.refreshControl.beginRefreshing()触发该控件时,该控件不会显示在导航栏中,直到我向下滚动(就像您通常会触发它一样) 但这甚至不是最

我想在我的应用程序的主表视图控制器中设置一个UIRefreshControl来触发一个刷新函数(你现在可能已经猜到了)刷新它

添加它不是问题,我可以通过情节提要(通过启用刷新)或控制器(通过使用
self.refreshControl=UIRefreshControl()
)进行设置

当用户触发该控件时,它会开始正常刷新,但当我通过
self.refreshControl.beginRefreshing()
触发该控件时,该控件不会显示在导航栏中,直到我向下滚动(就像您通常会触发它一样)

但这甚至不是最奇怪的部分。当它最终对用户可见时,它会不断闪烁,过了一段时间它就不可见了

对于
self.refreshControl.endRefreshing()
方法,动画非常突然,而且有时导航栏不会再次向上滚动(在顶部留下空白)

这是一个gif,应该是总结

我使用swift 4.2,该应用程序在不同的模拟器(运行iOS 12.1)和我的iPhone X(运行iOS 12.1.2)上进行了测试,发布目标是iOS 10.0

我已经对我的问题做了研究,但似乎没有人有确切的问题(至少是闪烁),或者解决方案对我不起作用

以下是我的视图控制器的设置方式:

class MyViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.refreshControl = UIRefreshControl()
        self.refreshControl?.addTarget(self, action: #selector(reload), for: .valueChanged)
        
        self.refreshControl.beginRefreshing()
    }


    @objc func reload() {
    
        DispatchQueue(label: "update").async {

            sleep(10)
        
            DispatchQueue.main.async {
                self.refreshControl?.endRefreshing()
            }
        }
    }
}
谢谢你的阅读,我真的希望有人能帮助我

更新 我刚刚发现,这个问题只会出现在标题较大的非半透明导航栏上,因此选择半透明导航栏而不是不透明导航栏是一个解决方案(遗憾的是,这不是我愿意接受的解决方案)。也许有人有一种方法可以使用不透明的导航栏来实现功能性刷新控件


此外,我还向苹果提交了一份bug报告,因为这样的事情本来就不应该发生,当他们回复我时,我会更新这篇文章。

你可能应该在重新加载函数中调用beginRefreshing。因为它实际上是对用户与UI交互的响应。另外,refreshControl添加到何处?永远不要叫睡眠。。。使用dispatch AsyncAfterHanks进行快速响应。我在重载函数中添加了beginRefreshing,但这并没有改变任何东西,刷新控件仍在闪烁,我在viewDidLoad方法中添加了它,添加到我的意思是,在哪里添加它作为子视图以及如何添加?它是UITableViewController的默认变量,我使用
self.refreshControl=UIRefreshControl()
,来定义它,但也可以在故事板中设置。抱歉,我还注意到,当使用大标题时,UIRefreshControl似乎完全被破坏。如果我在UIViewController的“navigationItem.LarGetTitleDisplayMode=.never”中添加了这个选项,那么根据文档,它工作得非常好