ios - 使用自动布局时如何在加载时滚动 UIScrollView

标签 ios cocoa-touch uiviewcontroller uiscrollview autolayout

我有一个在 viewDidLoad 中设置的 UIScrollView UIViewController 的方法(我称之为 ScrollViewController )。 ScrollView 包含水平内容页面(类似于 native 天气应用程序)。

显示 ScrollView 时,应该可以选择它从哪一页开始。我的模式是这样的:

  • 初始化ScrollViewController .这里没什么大事发生。 currentPage属性默认为 0。
  • 设置scrollViewController.currentPage到所需的页码。
  • viewDidLoadScrollViewController , 阅读 self.currentPage并使用 scrollToRectsetContentOffset相应地滚动。

滚动实现看起来不错,因为我在其他地方使用相同的代码跳转到某些页面。但是在第一次加载时,没有任何反应(也就是说, ScrollView 没有滚动到所需的页面)。

认为我找到了原因 - 似乎 contentSizeviewDidLoad 期间, ScrollView 的(由自动布局派生的记得)为 0 ,这似乎可以防止滚动。在 viewWillAppear 期间它也为零。仅在 viewDidAppear滚动是否起作用,这当然会带来奇怪的用户体验。

我该如何解决这个问题?以某种方式在 viewDidLoad 中强制布局是否明智? ?或者其他一些方法?

最佳答案

viewDidLayoutSubviews 就是您要找的。这是完全初始化所有 subview 框架的方法。因此,尝试在您的 viewController 中调用您的 scrollView 的设置方法:

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    [self setupView];
}

关于ios - 使用自动布局时如何在加载时滚动 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430218/

相关文章:

ios - 向 UICollectionView 添加多个倒数计时器

android - 一种在 flutter 中将最小化的应用程序置于前台的方法

ios - 为什么在 applicationProtectedDataWillBecomeUnavailable 中 isProtectedDataAvailable 不正确?

ios - 用于图像上传的 Firebase 存储

ios - 在运行时将 UIDatePicker 添加到 UIView 的问题

iphone - UIView 总是在最前面

ios - nil 模态视图 Controller 错误

iphone - 尝试将照片库中的图像保存到 iPad 应用程序包中

ios - 我可以检测 iPhone 是否启用了模糊功能吗?

ios - 检测 View Controller 何时从弹出窗口出现