iOS - 自适应布局(尺寸类) 尽早获取数据一次,并将 UIView 放置在视图控制器视图中心



我使用启用了大小类的自动布局。
我想尽快获取数据,并且在以下情况下工作正常:

override func viewDidLoad() {
    super.viewDidLoad()
    fetchData()
}

问题是帧尚未计算,并给出了一个框架,即 600x600,这是故事板中的画布大小。这意味着,如果我想使用以下方法将自定义加载器放置在中心:

self.loader.center = self.view.center

这将使装载机放置在远离中心的地方。
我可以通过调用 fetchData 来修复加载器放置:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    fetchData()
}

但这使其获取不止一次。所以我的问题是:我什么时候应该获取Data(),我希望它尽早发生。只有一次,我想加载器居中。

谢谢

编辑:禁用自动布局或大小类不是一种选择。

使用这个, self.loader.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2);

.SWIFT:self.loader.center = CGPoint(x: UIScreen.mainScreen().bounds.width/2, y: UIScreen.mainScreen().bounds.height/2)

或者您可以尝试从viewWillLayoutSubviews方法获取数据

回答我自己的问题:
用:

self.view.setNeedsLayout()

以强制视图自行绘制并设置约束。

最新更新