为什么在viewDidLoad()中设置UIimage的.center没有可见效果?

时间:2017-05-28 01:56:45

标签: ios swift

import UIKit

class ViewController: UIViewController {
    @IBOutlet var Label: UILabel!
    @IBOutlet weak var whiteboxselector: UIImageView!
    @IBOutlet var profilebutton: UIImageView!
    @IBOutlet var friendsbutton: UIImageView!
    @IBOutlet var smallcircle: UIImageView!

    // These are my outlets

    override func viewDidLoad() {
        super.viewDidLoad()

        Label.text = "Loaded"
        print("Loaded")

        // This is the line that runs but doesn't do anything
        whiteboxselector.center = self.friendsbutton.center
    }
}

谁能告诉我为什么?

2 个答案:

答案 0 :(得分:0)

尝试将有问题的行放在viewDidLayoutSubviews中,如下所示:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    whiteBoxSelector.center = self.friendsButton.center
}

以下是viewDidLayoutSubviews()的详细信息。

另外,为了便于阅读,您需要在camelCase中编写变量。

答案 1 :(得分:0)

当UIViewController加载到内存中时,会调用ViewDidLoad()。此时,您的子视图绝不会被设置并添加到视图层次结构中。 两种方式: a)在viewDid / Will出现(不太好,多次调用,所以你应该采取懒惰的行为) b)使用Adrian方法,使用viewDidLayoutSubviews,这是另一个优点:例如,您可以根据新方向调整对齐... c)在故事板中对齐......