Min*_*ber 0 uitableview ios swift ios11
我在 UIViewController 中有一个 UITableView 显示视频。当我向下滚动时,我想制作从大标题到小标题的动画。我目前使用的代码:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if #available(iOS 11.0, *) {
UIView.animate(withDuration: 0.35, animations: {
if scrollView.contentOffset.y <= 128 {
self.navigationItem.largeTitleDisplayMode = .always
} else {
self.navigationItem.largeTitleDisplayMode = .never
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
但过渡时显得很神经质。有什么更好的方法来做到这一点?
如果您符合 UITableViewDelegate 添加以下代码:
var canTransitionToLarge = false
func scrollViewDidScroll(_ scrollView: UIScrollView) {
func animate(){
self.navigationController?.navigationBar.setNeedsLayout()
self.view.setNeedsLayout()
UIView.animate(withDuration: 0.25, animations: {
self.navigationController?.navigationBar.layoutIfNeeded()
self.view.layoutIfNeeded()
})
}
if canTransitionToLarge && scrollView.contentOffset.y <= 0 {
self.navigationItem.largeTitleDisplayMode = .always
animate()
canTransitionToLarge = false
}
else if !canTransitionToLarge && scrollView.contentOffset.y > 0 {
self.navigationItem.largeTitleDisplayMode = .never
animate()
canTransitionToLarge = true
}
}
Run Code Online (Sandbox Code Playgroud)
如果不符合 UITableViewDelegate 添加ScrollViewDelegate到您的 ViewController:
class ViewController: UIViewController, UIScrollViewDelegate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |