以前是作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)
}
}