繁体   English   中英

iOS-自适应布局(大小类),尽可能早地一次获取数据,并将UIView放置在viewcontrollers视图中心

[英]iOS - Adaptive layout (Size classes) Fetch Data as early as possible, one time and place a UIView in viewcontrollers views center

我使用启用了大小类的自动布局。
我想尽快获取数据,在以下情况下效果很好:

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

问题在于该帧尚未计算,并给出了一个600x600的帧,即情节提要中的画布大小。 这意味着如果我想通过以下方式将自定义加载器放置在中心:

self.loader.center = self.view.center

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

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

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

谢谢

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

使用它,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()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM