首页 > 系统 > iOS > 正文

ios实现tableView顶部弹簧图片效果

2020-07-26 02:44:22
字体:
来源:转载
供稿:网友

大家可能注意到有些tableView的顶部图片,会随着你拉伸而跟着拉伸变大。本文实例为大家分享了ios实现tableView顶部“弹簧”图片,供大家参考,具体内容如下

一种思路是将图片放置tableView的tableHeaderView上当tablview下移改变图片的frame达到效果。当然这个效果特别简单,高手可以略过。

代码如下

import UIKitclass ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { lazy var myTableView : UITableView! = {  var tableView = UITableView.init(frame: self.view.frame,style:UITableViewStyle.plain)  tableView.delegate = self  tableView.dataSource = self  tableView.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "mycell")  return tableView }()  var headerImageView:UIImageView? var headerView:UIView? var headerViewHeight:CGFloat = 0.0   override func viewDidLoad() {  super.viewDidLoad()  // Do any additional setup after loading the view, typically from a nib.  setupUI() } func setupUI(){  headerView = UIView.init(frame: CGRect(x:0,y:0,width:self.view.frame.width,height:300))  headerViewHeight = headerView!.frame.height;  self.view.addSubview(headerView!)  headerImageView = UIImageView.init(frame: headerView!.frame)  headerImageView?.image = UIImage.init(named: "bg-mine")  headerView?.addSubview(headerImageView!)  myTableView.tableHeaderView = headerView  self.view.addSubview(myTableView)   }  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  return 2 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "mycell", for: indexPath)  cell.textLabel?.text = "测试"  return cell } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  return 50 }  func scrollViewDidScroll(_ scrollView: UIScrollView) {  let contentOffSetY = scrollView.contentOffset.y  if contentOffSetY < 0 {   var rect = headerView?.frame   rect?.size.height = headerViewHeight - contentOffSetY   let headerViewWidth = headerView?.frame.size.width   rect?.size.width = headerViewWidth!*(headerViewHeight-contentOffSetY)/headerViewHeight   rect?.origin.x = -((rect?.size.width)! - headerViewWidth!)/2   rect?.origin.y = contentOffSetY   headerView?.frame = rect!   headerImageView?.frame = rect!  }  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表