摘要:有很多的app在用户界面都用一个图片背景设置为页面的顶部,达到优化用户体验的效果,当用户下拉到一定程度时又显示出导航栏,上拉到一定高度又隐藏导航栏,今天自己也研究了一下,这里做一下知识点笔记。ps:在这里下载源码哦~~~
1、采用设置导航栏背景图片为透明图片和控制UITableVIew的orgin.x的位置达到效果。
// 设置状态栏颜色为白色
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
// 去除NavigationBar底部黑线
self.navigationController?.navigationBar.shadowImage = UIImage()
//设置NavigationBar背景为透明
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "bg"), forBarMetrics: UIBarMetrics.Default)
2、由于UITableView是UIScrollVIew的子类,监听UITableView的滑动协议。
// MARK: - 实现UIScrollView的代理方法
extension ViewController: UIScrollViewDelegate {
func scrollViewDidScroll(scrollView: UIScrollView) {
let contentOffSet: CGFloat = self.tableView.contentOffset.y
if(contentOffSet < 72) {
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "bg"), forBarMetrics: UIBarMetrics.Default)
}else {
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "bg4"), forBarMetrics: UIBarMetrics.Default)
}
}
}
3、UIImagePickerController的使用。(ps:在此属性采用懒加载,减少内存消耗)
lazy var picker: UIImagePickerController = {
let pick: UIImagePickerController = UIImagePickerController()
pick.view.backgroundColor = UIColor.grayColor()
pick.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
pick.delegate = self
return pick
}()
效果图: