gpt4 book ai didi

ios - 以编程方式将 UIScrollView 滚动到 Swift 中子 UIView( subview )的顶部

转载 作者:IT王子 更新时间:2023-10-29 05:04:40 29 4
gpt4 key购买 nike

我的 UIScrollView 中有几个屏幕的内容,它只能垂直滚动。

我想以编程方式滚动到包含在其层次结构中某处的 View 。

UIScrollView 移动以便 subview 位于 UIScrollView 的顶部(动画或非动画)

最佳答案

这是我最后写的一个扩展。

用法:

从我的 viewController 调用,self.scrollView 是 UIScrollView 的导出,self.commentsHeader 是其中的一个 View ,靠近底部:

self.scrollView.scrollToView(self.commentsHeader, animated: true)

代码:

您只需要 scrollToView 方法,但也保留 scrollToBottom/scrollToTop 方法,因为您可能也需要这些方法,但感觉可以自由删除它们。

extension UIScrollView {

// Scroll to a specific view so that it's top is at the top our scrollview
func scrollToView(view:UIView, animated: Bool) {
if let origin = view.superview {
// Get the Y position of your child view
let childStartPoint = origin.convertPoint(view.frame.origin, toView: self)
// Scroll to a rectangle starting at the Y of your subview, with a height of the scrollview
self.scrollRectToVisible(CGRect(x:0, y:childStartPoint.y,width: 1,height: self.frame.height), animated: animated)
}
}

// Bonus: Scroll to top
func scrollToTop(animated: Bool) {
let topOffset = CGPoint(x: 0, y: -contentInset.top)
setContentOffset(topOffset, animated: animated)
}

// Bonus: Scroll to bottom
func scrollToBottom() {
let bottomOffset = CGPoint(x: 0, y: contentSize.height - bounds.size.height + contentInset.bottom)
if(bottomOffset.y > 0) {
setContentOffset(bottomOffset, animated: true)
}
}

}

关于ios - 以编程方式将 UIScrollView 滚动到 Swift 中子 UIView( subview )的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39018017/

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