ios - 点击/向后滑动时图像与之前的 View 重叠

标签 ios swift uiscrollview uiimageview

我有一个 UIScrollView,它完全涵盖了我的一个 View 。我已将背景图像添加到同一个 View ,该 View 以与实际 UIScrollView 略有不同的速率滚动。除非我使用向后滑动手势或点击“返回”按钮,否则这绝对没问题。发生的情况是图像在消失前覆盖 View 约 0.5 秒,看起来很糟糕。

这就是我的意思:

enter image description here

如您所见,这是在手势进行到一半时,您无法看到之前的 View ,而只能看到图像左侧的部分。它不会发生在 UIScrollView 的第一页上,所以我猜这是因为图像与前一个 View 重叠。

这是我的代码:

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
}

有人有什么建议吗?

最佳答案

您必须在 viewDidLoad 函数中添加以下内容:

self.view.clipsToBounds = truescrollView.clipsToBounds = true 如果您只想在 UIScrollView 中剪辑 subview 。

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

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

关于ios - 点击/向后滑动时图像与之前的 View 重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867166/

相关文章:

iphone - 使用点语法作为 getter 是错误的吗?

iOS - 应用程序 NSUserDefault 中的对象存储在哪里?

swift - 如何快速将 UIColor 类型的值转换为 Uint

ios - UIDevice currentDevice 模型可能的值

ios - setContentOffset : animated: wont do anything if animated = NO

android - ios 10 的 Ionic Cordova 相机问题

ios - 在后台 Swift 中发送用户的位置

ios - 自定义 UIBarButton 项目图像

ios - UICollectionView 初始化后不滚动

javascript - 滚动时如何淡入到淡出元素?