我希望在启动应用程序时将滚动视图(位于视图的上半部分)滚动到滚动视图的底部。我想要它,以便在应用启动时无法向下滚动。
我尝试过:
scrollView.contentSize = CGSize(width: self.view.frame.size.width, height: 667)
scrollView.contentOffset = CGPoint(x:0, y:self.view.frame.size.height )
但是,这只会使我的滚动视图几乎移到底部。我仍然可以向下滚动一点,这是我不想要的。
我也尝试过:
let bottomOffset = CGPoint(x: 0, y: scrollView.contentSize.height - scrollView.bounds.size.height)
scrollView.setContentOffset(bottomOffset, animated: true)
但这似乎也不起作用。
答案 0 :(得分:0)
您可以尝试使用以下代码将滚动视图移动到屏幕底部:
extension UIScrollView {
func scrollToBottom() {
let bottomOffset = CGPoint(x: 0, y: contentSize.height - bounds.size.height + contentInset.bottom)
setContentOffset(bottomOffset, animated: true)
}
}
添加此扩展,然后尝试以下代码以访问此扩展以滚动到底部:
scrlView.scrollToBottom()
如果它无法正常工作,那么您也可以尝试在邮件队列中执行:
DispatchQueue.main.async {
scrlView.scrollToBottom()
}
让我知道您是否遇到任何问题。
答案 1 :(得分:0)
如果愿意,可以使用此扩展名:
extension UIScrollView {
func scrollToBottom(animated: Bool) {
if self.contentSize.height < self.bounds.size.height { return }
let bottomOffset = CGPoint(x: 0, y: self.contentSize.height - self.bounds.size.height)
self.setContentOffset(bottomOffset, animated: animated)
}
}
但是我建议您不要使用它,因为代码很难维护。我的建议是在View Controller中使用TableView或Collection View并执行以下操作:
yourTableView.transform = CGAffineTransform(scaleX:1,y:-1)
cell.transform = CGAffineTransform(scaleX:1,y:-1)
因此,根据ios的默认属性,tableview应该从top开始。由于我们将其转换为可以显示在视图底部,因此内容将在那里。