iOS 下拉 图片放大 swift

下拉图片放大一般是和 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.
        }

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值