Swift实现下拉图片放大效果

之前是做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)

        }

    }

猜你喜欢

转载自my.oschina.net/u/2986115/blog/1581042