Ios 点击/回扫时,图像与上一视图重叠

Ios 点击/回扫时,图像与上一视图重叠,ios,swift,uiscrollview,uiimageview,Ios,Swift,Uiscrollview,Uiimageview,我有一个UIScrollView,它完全覆盖了我的一个视图。我在同一个视图中添加了一个背景图像,它的滚动速度与实际的UIScrollView略有不同。除非我使用“向后滑动”手势或轻触“向后”按钮,否则此操作绝对有效。发生的情况是,图像在消失之前覆盖了视图约0.5秒,看起来非常糟糕 这就是我的意思: 如您所见,这是手势的中间部分,您无法看到前面的视图,而只看到图像左侧的部分。它不会出现在UIScrollView的第一页,所以我猜这是因为图像与前一个视图重叠 这是我的密码: override fu

我有一个
UIScrollView
,它完全覆盖了我的一个视图。我在同一个视图中添加了一个背景图像,它的滚动速度与实际的
UIScrollView
略有不同。除非我使用“向后滑动”手势或轻触“向后”按钮,否则此操作绝对有效。发生的情况是,图像在消失之前覆盖了视图约0.5秒,看起来非常糟糕

这就是我的意思:

如您所见,这是手势的中间部分,您无法看到前面的视图,而只看到图像左侧的部分。它不会出现在
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
}
override func viewDidLoad(){
让pagesScrollViewSize=scrollView.frame.size
scrollView.contentSize=CGSize(宽度:pagesScrollViewSize.width*CGFloat(images.count),高度:pagesScrollViewSize.height)
backgroundImageView.frame=CGRect(x:0,y:0,宽度:2484,高度:736)
backgroundImageView.image=UIImage(名为:“SF.png”)
var visualEffectView=UIVisualEffectView(效果:UIBlurEffect(样式:。灯光))作为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);
如果系数<0{
系数=0
}
如果系数>1{
系数=1
}
var frame:CGRect=backgroundImageView.frame
frame.origin.x=系数*(414-backgroundImageView.frame.size.width)
backgroundImageView.frame=frame
}

有人有什么建议吗?

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

self.view.clipsToBounds=true
scrollView.clipsToBounds=true
如果您只想在
UIScrollView
中剪裁子视图

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


来自苹果公司的文档:

我不明白你的所有解释,但我们在右边看到的“黄色视图”是什么?与上一个视图重叠的视图。右侧的黄色视图是滚动视图中显示的当前页面。这就是我做背部姿势时的页面。我用手指在背部姿势的中间握住屏幕截图。在你的
viewDidLoad中尝试
self.view.clipsToBounds=true
和/或
scrollView.clipsToBounds=true
,太完美了!非常感谢。好的,我只是作为答案发布;)。不客气。当你看到它时,检查它是否正确。