以前是作Object-C的,最近學會了Swift,下面用Swift實現效果。swift
首先使用的是UITableView來做爲主題框架,框架
1.建立 .swift文件(相似OC裏的PCH文件),在頭部寫入import UIKit建立變量SCREEN來存放屏幕的Rect代理
let SCREEN = UIScreen.main.bounds;圖片
2.建立頂部的圖片和Viewip
//頂部的圖片和Viewit
lazy var headerImageViewTop:UIImageView = {table
let header = UIImageView.init(frame: CGRect(x:0,y:0,width:SCREEN.width,height:160))import
header.backgroundColor = UIColor.red變量
header.image = UIImage.init(named: "timg.jpeg")cli
header.contentMode = UIViewContentMode.scaleAspectFill
header.clipsToBounds = true
return header
}()
lazy var headerBackView:UIView = {
let headerView = UIView.init(frame: CGRect(x:0,y:0,width:SCREEN.width,height:160))
headerView.backgroundColor = UIColor.lightGray
return headerView
}()
3.UITableView
//MARK:- 界面元素
func createView() -> Void {
myTableView.frame = CGRect(x:0,y:0,width:SCREEN.width,height:SCREEN.height-49-64)
myTableView.delegate = self
myTableView.dataSource = self
myTableView.backgroundColor = UIColor .white
let nib = UINib.init(nibName: "TMVCableViewCell", bundle: nil)
myTableView.register(nib, forCellReuseIdentifier: "Cell")
myTableView.tableHeaderView = self.headerBackView
self.headerBackView.addSubview(self.headerImageViewTop)
}
4.在代理中設置滾動時的座標變化
//MARK:- 滾動tableView後
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let imageWeight:CGFloat = headerImageViewTop.frame.size.width
//上下偏移量
let imageOffsetY:CGFloat = scrollView.contentOffset.y
//上移
if imageOffsetY<0 {
let totalOffset:CGFloat = 160+abs(imageOffsetY)
if abs(imageOffsetY)>160 {
return
}
self.headerImageViewTop.frame = CGRect(x:0,y:imageOffsetY,width: imageWeight,height:totalOffset)
}
}