Ios 调整scrollview的大小时滚动到scrollview页面
我有一个禁用分页的滚动视图。它有许多子视图。每个视图都有一个宽度约束,并且彼此和scrollview都受到约束,因此当子视图增长时,scrollview内容区域也会增长 点击子视图时,我运行以下代码:Ios 调整scrollview的大小时滚动到scrollview页面,ios,swift,uiscrollview,Ios,Swift,Uiscrollview,我有一个禁用分页的滚动视图。它有许多子视图。每个视图都有一个宽度约束,并且彼此和scrollview都受到约束,因此当子视图增长时,scrollview内容区域也会增长 点击子视图时,我运行以下代码: var page = subView.tag for scrollViewSubViewWidthConstraint in scrollViewSubViewWidthConstraints { //this results in the subview being larger th
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)
本规范旨在:
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设置到动画块中
UIView.animateWithDuration(0.35) {
self.view.layoutIfNeeded()
scrollView.setContentOffset(CGPoint(x: self.view.frame.width * CGFloat(page), y: 0), animated: false)
}