viewDidLoad UIView 与 CGPoint()

viewDidLoad UIView with CGPoint()

我想创建我自己的自定义 segue 动画,我想在其中呈现 VC 从 button.origin 大小为 (1,1) 并转移到 CGPoint(0,0)并拉伸至全屏大小。

VC1 转至 VC2 并通过 VC1 的 button.frame 通过

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let PVC = segue.destinationViewController as VC2
    PVC.CGstart = button.frame.origin}

VC2我有

@IBOutlet var VC4: UIView!

var CGstart = CGPoint()

override func viewDidLoad() {
    super.viewDidLoad()
    VC4.frame.origin = CGstart
}

@IBAction func DragTest(sender: UIButton) {
    VC4.frame.origin = CGstart
    println(CGstart)
}

viewDidLoad 不调整 VC4 的 frame.origin...而我的 @IBAction func DragTest 会调整

这是为什么?我尝试了很多不同的变体。

尝试将原点设置移动到 viewWillAppear

override func viewWillAppear() {
    super.viewWillAppear()
    VC4.frame.origin = CGstart
}

这解决了问题。

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.layoutIfNeeded()
    VC4.frame.origin = CGstart
}

不需要 viewDidAppearlayoutSubviews