ios - 如何像 AppStore 应用程序详细信息页面一样为导航栏设置动画?
解决方案
首先设置导航栏透明如下
// Makes the navigation bar transparent
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
navigationController?.view.backgroundColor = UIColor.clear
现在使用该UIScrollViewDelegate
方法scrollViewDidScroll
来检测滚动视图的百分比并基于该方法更改 alpha
// MARK: UIScrollViewDelegate
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
super.scrollViewDidScroll(scrollView)
let maximumVerticalOffset = scrollView.contentSize.height - scrollView.frame.height
let currentVerticalOffset = scrollView.contentOffset.y
let percentageVerticalOffset = currentVerticalOffset / maximumVerticalOffset
let color = UIColor.init(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: percentageVerticalOffset)
navigationController?.navigationBar.backgroundColor = color
}
希望对你有帮助
推荐阅读
- php - Laravel 5 Symfony\Component\HttpKernel\Exception\NotFoundHttpException: POST http://localhost/myproject/public/leads
- github - 我应该 npmignore ".github" 文件夹吗?
- python - 为什么要使用合成?
- javascript - 在浏览器中关闭 WebSocket 连接时是否必须手动删除事件侦听器?
- java - java.lang.IllegalArgumentException:区域“eu-west-2”不是有效区域
- azure-sql-server-managed-instance - 如何修复与 FOREIGN KEY 约束冲突的 ALTER TABLE 语句
- javascript - 未收到 JavaScript 获取请求正文参数
- javascript - Office JavaScript Web 插件未更新
- android - 是材料设计,colorPrimary = 500,colorPrimaryDark 必须是 700?
- react-native - 当组件不属于堆栈导航器时的 props.navigation