向下滚动 table 视图时,如何使自定义标签作为 NavBar 消失?
How to make custom label as UINavBar disappear when scrolling down a table view?
我最近在我的应用程序中实现了一个自定义 UINavigationBar,它使用标签而不是普通的 largeTitle。当用户向下滚动 table 视图时,我一直试图让它消失。
到目前为止,我已尝试在显示第三个单元格时设置 label.isHidden = true,因为这是不在原始页面上的下一个单元格,因此表示滚动。然而,这意味着标签不会消失,直到滚动到一定数量。
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath == 2 {
label.isHidden = true
}
}
相反,我希望这个自定义导航栏标签在滚动开始后立即隐藏,并在滚动回到顶部时重新出现,就像默认的 UINavigationBar 一样。
谢谢。
您可以试试下面的代码:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if(velocity.y > 0) {
self.navLabel.isHidden = true
} else {
self.navLabel.isHidden = false
}
}
或者如果你想要和UINavigationBar一样的动画隐藏/显示,使用下面的代码:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if(velocity.y > 0) {
UIView.animate(withDuration: 0.5, delay: 0, options: UIView.AnimationOptions(), animations: {
let labelFrame = self.navLabel.frame
self.navLabel.frame = CGRect(x: labelFrame.origin.x, y: -64, width: labelFrame.size.width, height: labelFrame.size.height)
}, completion: nil)
} else {
UIView.animate(withDuration: 0.5, delay: 0, options: UIView.AnimationOptions(), animations: {
let labelFrame = self.navLabel.frame
self.navLabel.frame = CGRect(x: labelFrame.origin.x, y: 0, width: labelFrame.size.width, height: labelFrame.size.height)
}, completion: nil)
}
}
我最近在我的应用程序中实现了一个自定义 UINavigationBar,它使用标签而不是普通的 largeTitle。当用户向下滚动 table 视图时,我一直试图让它消失。
到目前为止,我已尝试在显示第三个单元格时设置 label.isHidden = true,因为这是不在原始页面上的下一个单元格,因此表示滚动。然而,这意味着标签不会消失,直到滚动到一定数量。
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath == 2 {
label.isHidden = true
}
}
相反,我希望这个自定义导航栏标签在滚动开始后立即隐藏,并在滚动回到顶部时重新出现,就像默认的 UINavigationBar 一样。
谢谢。
您可以试试下面的代码:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if(velocity.y > 0) {
self.navLabel.isHidden = true
} else {
self.navLabel.isHidden = false
}
}
或者如果你想要和UINavigationBar一样的动画隐藏/显示,使用下面的代码:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if(velocity.y > 0) {
UIView.animate(withDuration: 0.5, delay: 0, options: UIView.AnimationOptions(), animations: {
let labelFrame = self.navLabel.frame
self.navLabel.frame = CGRect(x: labelFrame.origin.x, y: -64, width: labelFrame.size.width, height: labelFrame.size.height)
}, completion: nil)
} else {
UIView.animate(withDuration: 0.5, delay: 0, options: UIView.AnimationOptions(), animations: {
let labelFrame = self.navLabel.frame
self.navLabel.frame = CGRect(x: labelFrame.origin.x, y: 0, width: labelFrame.size.width, height: labelFrame.size.height)
}, completion: nil)
}
}