在故事板中,我在UIScrollView
中有一个标签和许多其他对象。 (UIScrollView
在视图中。)
我希望当标签滚过它时,将导航栏的标题设置为标签的标题。
我已经尝试过这段代码,但它不起作用:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if(self.lbl.frame.origin.x==60) {
self.navigationController!.navigationBar.topItem!.title = lbl.text
}
}
我该怎么办?我是Swift的新手。
答案 0 :(得分:6)
首先,我怀疑您实际上是在尝试查找标签的y
值(即垂直偏移量)而不是x
值,即{{1} }。
其次,您不想要标签self.lbl.frame.origin.x==60
,因为frame
表示标签在滚动视图中的位置(不会发生变化);相反,你想要标签在超级视图中的位置。
那说,试试这个:
CGRect
答案 1 :(得分:3)
您的代码存在一些问题:
self.lbl.frame.origin.x==60
这有什么机会?这就像掷硬币并希望它落在它的边缘。标签的顶部在某一点上永远不会完全。
标签的来源从不更改;滚动滚动视图不会更改其子视图的框架。您需要查看滚动视图的内容偏移量(即滚动多远)。
您需要完成测试。当用户向后滚动时会发生什么?此外,您想要在用户滚动的每个瞬间重复更改导航项目标题 ,还是仅一次?