如何设置UIScrollView滚动到底部?

时间:2019-05-18 04:46:01

标签: swift xcode uiscrollview

我希望在启动应用程序时将滚动视图(位于视图的上半部分)滚动到滚动视图的底部。我想要它,以便在应用启动时无法向下滚动。

我尝试过:

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)

但这似乎也不起作用。

2 个答案:

答案 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并执行以下操作:

  1. 使用以下代码反转TableView或CollectionView。这会使TableView或CollectionView的顶部移至底部,但单元格将被反转:
  

yourTableView.transform = CGAffineTransform(scaleX:1,y:-1)

  1. 然后使用相同的代码反转单元格。
  

cell.transform = CGAffineTransform(scaleX:1,y:-1)

因此,根据ios的默认属性,tableview应该从top开始。由于我们将其转换为可以显示在视图底部,因此内容将在那里。