2017-05-28 24 views
1
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 
    } 
} 

有誰能告訴我爲什麼?爲什麼在viewDidLoad()中設置UIimage的.center沒有可見的效果?

回答

0

嘗試把你的問題線viewDidLayoutSubviews,如下所示:

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

這裏有viewDidLayoutSubviews()更多細節。

此外,爲了便於閱讀,您需要在camelCase中編寫變量。

+2

腳本與否,使用camelcase快速明確指出,請參閱:https://swift.org/documentation/api-design-guidelines /。它明確指出:「遵循大小寫約定,類型和協議的名稱是UpperCamelCase,其他所有內容都是lowerCamelCase。」 – ingconti

0

當UIViewController加載到內存中時,會調用ViewDidLoad()。在這一點上,您的子視圖絕不能被設置並添加到視圖層次結構中。 兩種方法: a)讓它在viewDid/Will中出現(不太好,因爲被稱爲次數多,所以你應該採取懶惰的行爲) b)使用Adrian方法,使用viewDidLayoutSubviews,作爲另一個優點:你可以示例根據新的方向調整對齊... c)在Storyboard中對齊...

相關問題