真對(duì)一般tableView下拉整個(gè)tableviewcell一起向下移動(dòng)進(jìn)行修改塘揣。
效果圖:
首先創(chuàng)建一個(gè)headerView文件和XIB
headerView.swift
import UIKit
import IBAnimatable
class NoLoginHeaderView: UIView {
//背景圖片
@IBOutlet weak var baImageView: UIImageView!
//創(chuàng)建注冊(cè)View的類(lèi)方法
class func headerView()->NoLoginHeaderView{
print(self)
return Bundle.main.loadNibNamed("\(self)", owner: nil, options: nil)?.last as! NoLoginHeaderView
}
}
headerView.xib:
要實(shí)現(xiàn)背景圖占領(lǐng)整個(gè)上半部分康聂,所以將圖片向上的約束設(shè)置為-20
同時(shí)在tableViewController的Viewdidload()中添加以下代碼
//實(shí)例化headerView
fileprivate lazy var headerView:NoLoginHeaderView = {
let headerView = NoLoginHeaderView.headerView()
return headerView
}()
//設(shè)置tableView的headerView
tableView.tableHeaderView = headerView
//設(shè)置狀態(tài)欄的顏色
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
添加以下方法對(duì)向下拉進(jìn)行代理
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
//偏移量
let offsetY = scrollView.contentOffset.y
//判斷是否向下劃動(dòng)
if offsetY < 0 {
//headerView高度位260续膳,因?yàn)閳D片向上位-20,所以headerView設(shè)置位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)
}
}