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

-3 ios swift3

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

我想在标签滚过它时将导航栏的标题设置为标签的标题.

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

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

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

Lyn*_*ott 7

首先,我怀疑你实际上是在试图找到标签的y值(即垂直偏移)而不是它的x值,即self.lbl.frame.origin.x==60.

其次,你不需要标签,frame因为它CGRect代表了标签在scrollview中的位置(不会改变); 相反,你想要标签在superview中的位置.

那说,试试这个:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if(scrollView.convert(lbl.frame.origin, to: self.view).y <= 60) {
      navigationController!.navigationBar.topItem!.title = lbl.text
    }
}
Run Code Online (Sandbox Code Playgroud)