点击/向后滑动时图像与先前视图重叠

时间:2015-04-25 15:34:20

标签: ios swift uiscrollview uiimageview

我有UIScrollView完全涵盖了我的一个观点。我在同一个视图中添加了一个背景图像,其滚动速度与实际UIScrollView略有不同。除非我使用后滑动手势或点击“后退”,否则此功能绝对正常。按钮。发生的事情是图像覆盖视图大约0.5秒才消失,而且看起来非常糟糕。

这就是我的意思:

enter image description here

正如您所看到的那样,这是通过手势的中间位置,而不是能够看到前一个视图,您只能看到图像左侧的部分。它并没有发生在UIScrollView的第一页上,所以我猜它是因为图像与之前的视图重叠。

这是我的代码:

override func viewDidLoad() {
    let pagesScrollViewSize = scrollView.frame.size
    scrollView.contentSize = CGSize(width: pagesScrollViewSize.width * CGFloat(images.count), height: pagesScrollViewSize.height)

    backgroundImageView.frame = CGRect(x: 0, y: 0, width: 2484, height: 736)
    backgroundImageView.image = UIImage(named: "SF.png")

    var visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light)) as UIVisualEffectView
    visualEffectView.frame = backgroundImageView.bounds

    backgroundImageView.addSubview(visualEffectView)

    view.addSubview(backgroundImageView)
    view.sendSubviewToBack(backgroundImageView)

    scrollView.backgroundColor = UIColor.clearColor()
}

func scrollViewDidScroll(scrollView: UIScrollView) {
    loadVisiblePages()

    var factor = scrollView.contentOffset.x / (scrollView.contentSize.width - 414);
    if factor < 0 {
        factor = 0
    }
    if factor > 1 {
        factor = 1
    }

    var frame: CGRect = backgroundImageView.frame
    frame.origin.x = factor * (414 - backgroundImageView.frame.size.width)
    backgroundImageView.frame = frame
}

有人有任何建议吗?

1 个答案:

答案 0 :(得分:2)

您必须在viewDidLoad功能中添加以下内容:

如果您只想剪切self.view.clipsToBounds = true中的子视图,请

scrollView.clipsToBounds = trueUIScrollView

将此值设置为true会导致子视图被剪切到接收器的边界。如果设置为false,则不会剪切其帧超出接收器可见边界的子视图。默认值为false

来自Apple的文档:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instp/UIView/clipsToBounds