【问题标题】:How to set UIScrollView scrolled to bottom?如何设置 UIScrollView 滚动到底部?
【发布时间】:2019-10-05 08:30:22
【问题描述】:

我希望我的滚动视图(位于视图的上半部分)在我的应用启动时滚动到滚动视图的底部。我想要它,这样当应用启动时我就不能再向下滚动了。

我试过了:

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)

但这似乎也不起作用。

【问题讨论】:

标签: swift xcode uiscrollview


【解决方案1】:

如果你喜欢,你可以使用这个扩展:

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 应该从顶部开始。由于我们将其转换为显示在视图底部,因此内容将在那里。

【讨论】:

    【解决方案2】:

    您可以尝试以下代码将滚动视图移动到屏幕底部:

    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()
    }
    

    如果您遇到任何问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多