向下滚动时 ImageView 缩放

Posted

技术标签:

【中文标题】向下滚动时 ImageView 缩放【英文标题】:ImageView Scaling when scrolling down 【发布时间】:2015-11-02 16:08:40 【问题描述】:

如何在向下滚动时简单地用autolayout 缩放imageView

尝试查看视差效果,但不是我想要的。

我只想使用 scrollView 和标题 ImageView 可以调整大小取决于 scrollView 位置。

【问题讨论】:

你能重新表述你的问题吗?目前还不清楚你在做什么以及你想要实现什么。 【参考方案1】:

一步一步:

1 - 打开故事板并在顶部添加具有这些约束的图像视图(选择您的纵横比):

2 - 为你的 uiimage 选择 aspectFill 模式和 clipSubviews

3 - 在 vi​​ewController 的顶部添加一个 UIScrollView,里面有一个子视图。有关使用 scrollView 的自动布局的所有详细信息:http://natashatherobot.com/ios-autolayout-scrollview/

4 - 然后在代码中引用您的 imageView 和 scrollView。

5 - 在 vi​​ewDidLoad 中,插入 self.automaticallyAdjustsScrollViewInsets = false 并设置 scrollView 的 contentInsets 和 contentOffset :

class ViewController: UIViewController 

    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() 
        super.viewDidLoad()

        self.automaticallyAdjustsScrollViewInsets = false
   

    override func viewDidLayoutSubviews() 
        super.viewDidLayoutSubviews()

        let imageHeight = imageView.frame.height

        let newOrigin = CGPoint(x: 0, y: -imageHeight)

        scrollView.contentOffset = newOrigin
        scrollView.contentInset = UIEdgeInsets(top: imageHeight, left: 0, bottom: 0, right: 0)
    


6 - 将 scrollviewDelegate 添加到 ViewController 和 scrollViewDidScroll 方法以获取 scrollView 的位置

class ViewController: UIViewController, UIScrollViewDelegate

override func viewDidLoad() 
        super.viewDidLoad()

        scrollView.delegate = self
        self.automaticallyAdjustsScrollViewInsets = false


func scrollViewDidScroll(scrollView: UIScrollView) 

    let offsetY = scrollView.contentOffset.y

    if offsetY < 0
    
        imageView.frame.size.height = -offsetY
    
    else
    
        imageView.frame.size.height = imageView.frame.height
    

7 - 然后构建并运行。

您可以在 github 上下载示例: https://github.com/raphrel/scalingImageWhenScrollDown

也许有更好的解决方案,但这个可行。 享受

【讨论】:

以上是关于向下滚动时 ImageView 缩放的主要内容,如果未能解决你的问题,请参考以下文章

带有 ImageView 的 UIScrollView 不垂直滚动

ImageView.scaleType属性意义

Swift 3 - 缩放圆形 ImageView

在我的情况下,如何正确获取 scrollView 的 contentSize、zoomScale 和 contentOffset?

android 关于imageview的布局文件的设定

listitem中的Android listview imageview在滚动时隐藏