0

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

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

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

self.loader.center = self.view.center

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

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

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

谢谢

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

4

2 回答 2

0

Use this, 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)

or you can try fetching your data from viewWillLayoutSubviews method

于 2015-01-22T08:17:26.143 回答
0

回答我自己的问题:
使用:

self.view.setNeedsLayout()

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

于 2015-06-22T11:06:27.047 回答