我希望在应用程序加载时更新故事板中的UIView(并从故事板中实例化)。
我需要以动态的方式定位几个图标(界面构建器不允许我这样做)。但是,如果我将我的代码放在viewDidAppear或viewDidLoad中,它似乎太迟了。
以下是视图加载时前几秒或两秒发生的情况: 然后稍后它会转到正确的位置(因为代码被调用)。 我的问题是我需要在哪里初始化这些对象的位置,以便它们不会在一秒钟之后暂停。 viewDidLoad和viewDidAppear为时已晚?为什么!? :)
override func viewDidAppear(animated: Bool)
{
initView()
_gridLines = false
}
func initView()
{
_cameraFeed.initAfterLoad()
//center the buttons on half distance between middle button and screen edge
var middleDistance:CGFloat = _swapButton.frame.origin.x + _swapButton.frame.width/2
_linesButton.frame.origin.x = middleDistance/2 - _linesButton.frame.width/2
_flashButton.frame.origin.x = middleDistance + middleDistance/2 - _flashButton.frame.width/2
_selectPhotos.frame.origin.x = middleDistance/2 - _selectPhotos.frame.width/2
}
欢迎Swift和objc回答!
答案 0 :(得分:4)
尝试在viewWillAppear中设置框架的代码而不是viewDidAppear。
另外,你应该打电话给超级。
override func viewWillAppear(animated: Bool) {
initView()
_gridLines = false
super.viewWillAppear(animated)
}