ios實(shí)踐之tableView頂部“彈簧”圖片

大家可能注意到有些tableView的頂部圖片,會(huì)隨著你拉伸而跟著拉伸變大。
一種思路是將圖片放置tableView的tableHeaderView上當(dāng)tablview下移改變圖片的frame達(dá)到效果。當(dāng)然這個(gè)效果特別簡(jiǎn)單,只是單純?cè)囋嚭?jiǎn)書(shū)。

import UIKit

class 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 = "測(cè)試"
        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!
        }  
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容