2017-05-28 9 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

スクリプティングかどうか、迅速にラクダを使用して記載しています。https://swift.org/documentation/api-design-guidelines /。 「ケースの規則に従い、タイプとプロトコルの名前はUpperCamelCaseであり、その他はすべてlowerCamelCaseです。」 – ingconti

0

UIViewControllerがメモリにロードされると、ViewDidLoad()が呼び出されます。あなたのサブビューは決して設定されず、この時点でビュー階層に追加されません。 2つの方法: a)viewDid/Willで表示されます(それほど良くないので、怠惰な動作を採用する必要があります) b)Adrian Approachを使用して、viewDidLayoutSubviewsを使用して、別の利点として:例:新しい方向に基づいて配置を調整する... c)ストーリーボードで整列...

関連する問題