真对一般tableView下拉整个tableviewcell一起向下移动进行修改。
效果图:
首先创建一个headerView文件和XIB
headerView.swift
import UIKit
import IBAnimatable
class NoLoginHeaderView: UIView {
//背景图片
@IBOutlet weak var baImageView: UIImageView!
//创建注册View的类方法
class func headerView()->NoLoginHeaderView{
print(self)
return Bundle.main.loadNibNamed("\(self)", owner: nil, options: nil)?.last as! NoLoginHeaderView
}
}
headerView.xib:
要实现背景图占领整个上半部分,所以将图片向上的约束设置为-20
同时在tableViewController的Viewdidload()中添加以下代码
//实例化headerView
fileprivate lazy var headerView:NoLoginHeaderView = {
let headerView = NoLoginHeaderView.headerView()
return headerView
}()
//设置tableView的headerView
tableView.tableHeaderView = headerView
//设置状态栏的颜色
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
添加以下方法对向下拉进行代理
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
//偏移量
let offsetY = scrollView.contentOffset.y
//判断是否向下划动
if offsetY < 0 {
//headerView高度位260,因为图片向上位-20,所以headerView设置位280
let kMyHeaderViewHeight = 280
let totalOffset = kMyHeaderViewHeight + abs(offsetY)
let f = totalOffset / kMyHeaderViewHeight
headerView.baImageView.frame = CGRect(x:-screenWidth*(f-1)*0.5, y: offsetY, width: screenWidth*f, height: totalOffset)
}
}