UIScrollview以固定顶部弹跳和缩放

时间:2017-10-13 09:18:19

标签: ios xcode uiscrollview uiimageview

当滚动视图弹回时,尝试使UIImageView缩放。

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

正如您所看到的,图像就像滚动视图弹回时的缩放。

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

这是我想要做的:

enter image description here

3 个答案:

答案 0 :(得分:9)

根据滚动视图的偏移量对您的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具有顶部约束(加上前导,尾随)和高度。

答案 1 :(得分:1)

我建议您使用以下库之一

MXParallaxHeader

StrechyParallaxScrollView

答案 2 :(得分:0)

你可以欺骗&#39;将图像放在scrollview上方,并在scrollviewdelegate的didScroll方法中设置其高度(读取内容偏移量并确定图像高度)。如果将图像设置为宽高比填充,它将具有您想要的效果。