之前是做Object-C的,最近学会了Swift,下面用Swift实现效果。
首先使用的是UITableView来作为主题框架,
1.创建 .swift文件(类似OC里的PCH文件),在头部写入import UIKit创建变量SCREEN来存放屏幕的Rect
let SCREEN = UIScreen.main.bounds;
2.创建顶部的图片和View
//顶部的图片和View
lazy var headerImageViewTop:UIImageView = {
let header = UIImageView.init(frame: CGRect(x:0,y:0,width:SCREEN.width,height:160))
header.backgroundColor = UIColor.red
header.image = UIImage.init(named: "timg.jpeg")
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)
}
}
网友评论