UIScrollview 弹跳和缩放固定顶部

Posted

技术标签:

【中文标题】UIScrollview 弹跳和缩放固定顶部【英文标题】:UIScrollview bounce and zoom with fixed top 【发布时间】:2017-10-13 09:18:19 【问题描述】:

试图在滚动视图向下弹跳时使 UIImageView 缩放。

这个想法是从这个运球中偷来的:https://dribbble.com/shots/3341878-Product-Page

如您所见,当滚动视图向下弹跳时,图像就像是缩放。

在我的应用程序中,我在 UIScrollview 中有 UIImageView,我无法理解如何在 UIScrolvview 弹跳时修复 UIImageView 的顶部。

这是我想做的:

【问题讨论】:

查看此网址:***.com/questions/33481928/…。如果它对您的方案有帮助,可能会。 【参考方案1】:

根据滚动视图的偏移量对 imageView 应用缩放变换:

extension ViewController: UIScrollViewDelegate 
    public func scrollViewDidScroll(_ scrollView: UIScrollView) 
        let offset = scrollView.contentOffset

        if offset.y < 0.0 
            var transform = CATransform3DTranslate(CATransform3DIdentity, 0, offset.y, 0)
            let scaleFactor = 1 + (-1 * offset.y / (imageViewHeightConstraint.constant / 2))
        transform = CATransform3DScale(transform, scaleFactor, scaleFactor, 1)
            imageView.layer.transform = transform
         else 
            imageView.layer.transform = CATransform3DIdentity
        
    

通过这种方式,您无需将其“固定”到顶部,imageView 会随着内容偏移量的减少而在弹跳时简单地放大。您所需要的只是您的 imageView 具有顶部约束(加上前导、尾随)和高度。

【讨论】:

【参考方案2】:

我建议您使用以下库之一

MXParallaxHeader

StrechyParallaxScrollView

【讨论】:

使用库来做这么简单的事情似乎有点过分了。【参考方案3】:

您可以通过将图像放在滚动视图上方并在您的 scrollviewdelegate 上的 didScroll 方法中设置其高度来“作弊”(读取内容偏移量并确定图像高度)。如果您将图像设置为宽高比填充,它将具有您想要的效果。

【讨论】:

@Simon 可以分享一下演示吗?

以上是关于UIScrollview 弹跳和缩放固定顶部的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIScrollView 内使用 Autolayout 将 UIImage 视图缩放为正方形

iOS开发UI篇—UIScrollView控件实现图片缩放功能

问题:UIScrollview 弹跳使父 UIScrollview 弹跳

将 UIScrollView 中的内容视图固定到其底部而不是其顶部边缘

UIScrollView :仅向左水平分页,向右弹跳

如何创建允许 UIImageViews 分页和缩放的 UIScrollView?