【问题标题】:UIScrollView doesn't scroll second time it's openedUIScrollView 第二次打开时不滚动
【发布时间】:2017-04-03 06:22:29
【问题描述】:

我有 UIViewController,它有 UIScrollView,里面有很多标签和 ImageView,我使用以下方法设置 UIScrollView 的高度:

override func viewDidLayoutSubviews() {
   scrollView.contentSize = CGSize(width: self.contentView.frame.width, height:
            self.labelTitle1.frame.height +
            self.labelTitle2.frame.height +
            self.labelTitle3.frame.height +
            ...
            self.imageView1.frame.height +
            self.imageView2.frame.height +
            self.imageView3.frame.height +
            ...)
}

这在我打开 UIViewController 时第一次起作用,但是如果我使用 UINavigationController 返回然后使用相同的帖子再次打开该 UIViewController,我将无法向下滚动。

如果我随后在该 UIViewController 中打开另一个帖子,我可以向下滚动,但只是第一次打开它。

所有帖子都是一样的,它们只在第一次打开时滚动。

为什么会发生这种情况以及如何解决?

【问题讨论】:

  • 尝试在viewWillAppear()中调用viewDidLayoutSubviews()
  • @Danoram 我试过了,但还是不能滚动
  • 尝试在scrollView.contentSize = ...之前添加super.viewDidLayoutSubviews()
  • @Danoram 我添加了super.viewDidLayoutSubviews() 但什么也没发生,我仍然无法滚动
  • 好的,试试把这段代码移到viewDidAppear

标签: ios swift uiscrollview swift3


【解决方案1】:

将您的代码移至viewDidAppear(),以便您最终得到类似的东西

override func viewDidAppear() {

    scrollView.contentSize = CGSize(width: self.contentView.frame.width, height:
        self.labelTitle1.frame.height +
        self.labelTitle2.frame.height +
        self.labelTitle3.frame.height +
        ...
        self.imageView1.frame.height +
        self.imageView2.frame.height +
        self.imageView3.frame.height +
        ...)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2020-12-31
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多