在故事板中,我有一个标签和许多其他对象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的新手.
首先,我怀疑你实际上是在试图找到标签的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)