viewDidAppear& viewDidLoad正在初始化位置太晚了

时间:2014-10-24 18:42:26

标签: ios objective-c xcode swift interface-builder

我希望在应用程序加载时更新故事板中的UIView(并从故事板中实例化)。

我需要以动态的方式定位几个图标(界面构建器不允许我这样做)。但是,如果我将我的代码放在viewDidAppear或viewDidLoad中,它似乎太迟了。

以下是视图加载时前几秒或两秒发生的情况: initial load 然后稍后它会转到正确的位置(因为代码被调用)。 Fixed position a second later 我的问题是我需要在哪里初始化这些对象的位置,以便它们不会在一秒钟之后暂停。 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回答!

1 个答案:

答案 0 :(得分:4)

尝试在viewWillAppear中设置框架的代码而不是viewDidAppear。

另外,你应该打电话给超级。

override func viewWillAppear(animated: Bool) {
    initView()
    _gridLines = false

    super.viewWillAppear(animated)
}