Swift: "Freeze"在 scrollView 中弹跳

标签 swift uiscrollview

我正在尝试使用 ScrollView 。所以我的 Controller 上有一个启用了弹跳的 ScrollView。所以现在我像我想要的那样滚动页面末尾的 View 弹跳。

但现在我想卡住我的弹跳。我试着再解释一下:

我在 ScrollView 中向上滚动。页尾开始。所以现在弹跳开始了,它向上滚动了一点。然后我取消拖动 scrollView View 弹回。但我希望 scrollView 保持在这个位置(因为我将 View 推开,当我插入它时它弹跳看起来很奇怪)。

我尝试过的事情:

1.将 ScrollView 上的框架设置为当前弹跳位置。这只是编辑框架,但仍会反弹 ScrollView 。

v2.view.frame = CGRect(x: CGFloat(0), y: CGFloat(CURRENTBOUNCING), width: width, height: height)

2.关闭反弹。这只是结束当前的弹跳,并且在你不能再弹跳之后。因此,如果我不希望它反弹,这是行不通的。

scrollView.bounces = false

3.手动设置contentOffset。即使我在初始化之后写它,对我来说也没有任何改变

scrollView.contentOffset.y -= 100 // Or something like this

4.改变内容大小。由于限制,我认为这不会改变任何东西

scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height - 200)

5.关闭始终垂直弹跳。与 2 相同。

scrollView.alwaysBounceVertical = false

6.分页。我试过这个,因为现在我手动分页。但是后来我想念在寻呼之前弹跳到什么都没有。使用分页,您可以在滚动末尾时看到下一页。但是拖动后应该加载下一页。

希望有人能帮助我:)

编辑

7. 为我当前的 ScrollView 拍照,将其显示在 ScrollView 上方的屏幕上。这会延迟而不是在正确的时刻拍摄图像(因此反弹是在捕获的一半或已经完成。

let renderer = UIGraphicsImageRenderer(size: scrollView.bounds.size)
pufferImage.image = renderer.image { ctx in
        scrollView.drawHierarchy(in: scrollView.bounds, afterScreenUpdates: true) }

最佳答案

遇到了同样的问题。解决方法是记录内容偏移量并将 ScrollView 的垂直偏移量更改为该值,同时关闭滚动。

private var dismissTriggerd = false
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "contentOffset" {

        if scrollView.contentOffset.y < -70 && dismissTriggerd == false {
            scrollViewTop.constant = scrollView.contentOffset.y * -1
            scrollView.isScrollEnabled = false
            dismissTriggerd = true
            dismiss(animated: true)
        }
    }
}


deinit {
    scrollView.removeObserver(self, forKeyPath: "contentOffset")
}

关于Swift: "Freeze"在 scrollView 中弹跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42900372/

相关文章:

ios - 固定顶部的 UIScrollview 弹跳和缩放

iPhone:在 UIWebView 之间水平滚动以在 URL 历史记录中后退和前进

ios - 如何在 Swift 中让按钮随背景滚动?

ios - 将字典数据转换为 HTTP url 格式

swift - 如何在相机 ARKit 顶部添加半透明背景

Swift 4 获取定时定时器的当前时间间隔

iphone - UIScrolview 优先垂直和水平滚动

objective-c - 滚动 ScrollView

ios - 请问如何添加多个按钮去不同的场景?

ios - 如何传递不记名 token 以使用 URLSession 进行 Yelp API 调用