简体   繁体   English

用CGPoint()的viewDidLoad UIView

[英]viewDidLoad UIView with CGPoint()

I want to create my own custom segue animation in which I want to make presenting VC appear from the button.origin at size(1,1) and shift to CGPoint(0,0) and stretch to full screen size. 我想创建自己的自定义segue动画,在其中我要使呈现的VC从button.origin出现在size(1,1)处,并移至CGPoint(0,0)并拉伸至全屏大小。

VC1 segues to VC2 and passes VC1 's button.frame via VC1搜索到VC2并通过传递VC1的button.frame

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

in VC2 I have 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)
}

the viewDidLoad does not adjust VC4 's frame.origin....while my @IBAction func DragTest does viewDidLoad不能调整VC4的frame.origin ....,而我的@IBAction func DragTest可以

Why is this? 为什么是这样? I've tried so many different variations. 我尝试了很多不同的变化。

Try moving the origin setting to viewWillAppear . 尝试将原点设置移动到viewWillAppear

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

This solved the issue. 这解决了问题。

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

no need for viewDidAppear or layoutSubviews . 不需要viewDidAppearlayoutSubviews

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

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