滚动时在导航标题中设置标签文本

时间:2017-09-11 14:41:13

标签: ios swift3

在故事板中,我在UIScrollView中有一个标签和许多其他对象。 (UIScrollView在视图中。)

我希望当标签滚过它时,将导航栏的标题设置为标签的标题。

我已经尝试过这段代码,但它不起作用:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if(self.lbl.frame.origin.x==60) {
        self.navigationController!.navigationBar.topItem!.title = lbl.text
    }
}

我该怎么办?我是Swift的新手。

2 个答案:

答案 0 :(得分:6)

首先,我怀疑您实际上是在尝试查找标签的y值(即垂直偏移量)而不是x值,即{{1} }。

其次,您不想要标签self.lbl.frame.origin.x==60,因为frame表示标签在滚动视图中的位置(不会发生变化);相反,你想要标签在超级视图中的位置。

那说,试试这个:

CGRect

答案 1 :(得分:3)

您的代码存在一些问题:

  • self.lbl.frame.origin.x==60这有什么机会?这就像掷硬币并希望它落在它的边缘。标签的顶部在某一点上永远不会完全

  • 标签的来源从不更改;滚动滚动视图不会更改其子视图的框架。您需要查看滚动视图的内容偏移量(即滚动多远)。

  • 您需要完成测试。当用户向后滚动时会发生什么?此外,您想要在用户滚动的每个瞬间重复更改导航项目标题 ,还是仅一次