下拉图片放大一般是和 navigation bar 变透明 与不透明一起用的,本文只含下拉放大,因为改 navigation bar 方法很多,可以自己实现,比如:
1、让 navigationController?.navigationBar.isHidden = true ,然后自己 重写一个继承navigationBar,加上去。
2、 到 GitHub上搜索 navigation bar,导入一个用,alpha 值随便调,比自己做的好用。
效果:
正文:
import Foundation
import UIKit
class PersonViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {
var tableView:UITableView!
var v:UIImageView?
overridefunc viewDidLoad() {
super.viewDidLoad()
view.backgroundColor =UIColor.white
title ="Me"
//为了示范,我直接只把导航栏透明了==(但还是有frame在这的)
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage =UIImage()
//声明tableView
tableView =UITableView(frame: CGRect(x: 0, y:0, width: view.bounds.width, height: view.bounds.height), style: .plain)
tableView.dataSource =self
tableView.delegate =self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
//声明
v = UIImageView(frame: CGRect(x: 0, y:-200, width: view.bounds.width, height: 200))
v?.image = UIImage(named: "test.png")
//关键就这俩句,意思:内容自动放大缩小适应 imageView
v?.contentMode = .scaleAspectFill
v?.clipsToBounds =true
//可以运行几次 看看该偏移多少 我设置图高200 (别忘了导航栏+状态栏共64)
tableView.contentInset =UIEdgeInsets(top: 200-64, left:0, bottom: 0, right:0)
tableView.addSubview(v!)
view.addSubview(tableView)
}
func scrollViewDidScroll(_ scrollView:UIScrollView) {
let offY = scrollView.contentOffset.y
//先打印看看偏移再写
print(offY)
if offY <-200 {
print(v?.frame.origin.y)
v?.frame.origin.y = offY
v?.frame.size.height = -offY
//OK.
}
}
}