gpt4 book ai didi

ios - 在调整 ScrollView 大小时滚动到 ScrollView 页面

转载 作者:可可西里 更新时间:2023-11-01 02:21:33 25 4
gpt4 key购买 nike

我有一个禁用分页的 ScrollView 。它有许多 subview 。它们中的每一个都有一个宽度约束,并且相互约束并且受限于 ScrollView ,因此当 subview 增长时, ScrollView 内容区域也会增长。

点击 subview 时,我运行以下代码:

var page = subView.tag

for scrollViewSubViewWidthConstraint in scrollViewSubViewWidthConstraints {
//this results in the subview being larger than it previously was
scrollViewSubViewWidthConstraint.constant = self.view.frame.width
}

UIView.animateWithDuration(0.35) {
self.view.layoutIfNeeded()
}

scrollView.pagingEnabled = false
scrollView.setContentOffset(CGPoint(x: self.view.frame.width * CGFloat(page), y: 0), animated: true)

此代码旨在:

  1. 调整 subview 的大小,使其达到“页面”的宽度
  2. 在 ScrollView 上启用分页
  3. 顺利滚动到正确的页面

不幸的是,它不仅没有滚动到正确的页面,似乎是因为它试图在更新约束时计算滚动量,而且它以一种没有吸引力的时尚动画明智地滚动。

如果我将我的代码更改为这样(删除动画)它仍然不起作用:

self.view.layoutIfNeeded()

scrollView.pagingEnabled = true
scrollView.setContentOffset(CGPoint(x: self.view.frame.width * CGFloat(page), y: 0), animated: false)

这行得通,但它不是动画,而且是延迟的 - 两者都不行。

self.view.layoutIfNeeded()

UIHelper.delay(0.1, closure: { () -> () in //helper function that executes code after a given delay...
self.scrollView.pagingEnabled = true
scrollView.setContentOffset(CGPoint(x: self.view.frame.width * CGFloat(page), y: 0), animated: true)
})

最佳答案

也许解决方法是将 contentOffset 设置到动画 block 中

    UIView.animateWithDuration(0.35) {
self.view.layoutIfNeeded()
scrollView.setContentOffset(CGPoint(x: self.view.frame.width * CGFloat(page), y: 0), animated: false)
}

关于ios - 在调整 ScrollView 大小时滚动到 ScrollView 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30609072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com