cell下拉顶部拉伸

真对一般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)
       }
   }

你可能感兴趣的:(cell下拉顶部拉伸)