iOS开发 - 导航栏小萝莉头像放大缩小

较少代码实现,类似个人页面的头像变化功能

大家也可以根据 ScrollView 的偏移量实现更多的功能,如导航栏渐变,或者其他视图。
还有我们常用的第三方上拉刷新、下拉加载也是基于 ScrollView 的偏移量来实现的。

iOS开发 - 导航栏小萝莉头像放大缩小_第1张图片
小女神镇楼.gif
iOS开发 - 导航栏小萝莉头像放大缩小_第2张图片
SB界面设置

ViewController.swift

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var userImage: UIImageView!
    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        userImage.layer.masksToBounds = true
        userImage.layer.cornerRadius = 30
        
        tableView.delegate = self
        tableView.dataSource = self
    }
    
    /// 每次视图滚动时候调用此方法,因为tableView也是继承与scrollView,所以也可以使用此方法
    func scrollViewDidScroll(scrollView: UIScrollView) {
        
        let offsetY = tableView.contentOffset.y 
        switch offsetY {
        case -35...0, 0...25 : //按照你需求的效果进行调整 如不要 -35...0 继续上拉时候就不会变大了
            userImage.frame.size.height = 60 - offsetY
            userImage.frame.size.width = 60 - offsetY
            userImage.center.x = self.view.center.x
            userImage.layer.cornerRadius = userImage.frame.size.width/2
        default:
            break
        }
    }
     
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 30
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
}

例:让导航栏透明度随之改变

    let offsetY = scrollView.contentOffset.y
    switch offsetY {
    case -90...0:
        self.navigationController?.navigationBar.alpha = 0
    case 1...500:
        self.navigationController?.navigationBar.alpha = offsetY/200
    default:
      break
    }

你可能感兴趣的:(iOS开发 - 导航栏小萝莉头像放大缩小)