我在UIView(outerView)中有一個UIView(稱爲innerView)。 outerView具有Autolayout約束,並始終在根視圖中居中。 innerView只是任意放置在outerView中,沒有任何限制。他們都通過網點連接到視圖控制器。在UIView中居中的子視圖不能快速工作?
我想innerView始終在outerView中居中。當然,我可以使用autolayout,但我只需要測試是否可以通過代碼來移動它(因爲我發現它是我的真實項目中的問題)
不幸的是,我發現我無法移動innerView碼。任何人都知道原因?
這裏是代碼:
import UIKit
class ViewController: UIViewController {
// outerView is 300 X 300
@IBOutlet weak var outerView: UIView!
// innerView is 140 X 140, and it is the subview of outerView
@IBOutlet weak var innerView: UIView!
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
innerView.center = CGPoint(x: outerView.bounds.midX, y: outerView.bounds.midY)
innerView.autoresizingMask = .None
// result is : (150.0, 150.0) which is correct
print(innerView.center)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
// result is : (78.0, 222.0) which is not correct
print(innerView.center)
}
}
如果打印'outerView.bounds'在'viewWillLayoutSubviews ',你會得到什麼? – Sulthan
我得到'(0.0,0.0,300.0,300.0)'。如果我在設置後在'viewWillLayoutSubviews'中打印'innerView.center',我得到'(150,150)'這是正確的,但是如果我在'viewDidAppear'中打印它,我得到'(78.0,222.0)'這是顯然不是我想要的。 – rrrain
您也可以編程方式添加自動佈局約束。 – nhgrif