2017-07-02 95 views
1

我試圖通過設置約束來垂直對齊logoImage水平&但在測試時顯示在(x:0, y:0)上。 任何想法如何解決這個問題? 感謝嘗試以編程方式實現約束時忽略約束條件

var movieView : UIView? 
let logoImage = UIImageView(image: #imageLiteral(resourceName: "my_logo")) 

// This function runs in viewWillAppear 
internal func setupIntroMovie() { 
    movieView = UIView(frame: view.frame) 
    view.addSubview(movieView!) 
    view.addSubview(logoImage) 

    let horizontalConstraint = NSLayoutConstraint(item: logoImage, 
                attribute: .centerX, 
                relatedBy: .equal, 
                toItem: view, 
                attribute: .centerX, 
                multiplier: 1, 
                constant: 0) 
    let verticalConstraint = NSLayoutConstraint(item: logoImage, 
               attribute: .centerY, 
               relatedBy: .equal, 
               toItem: view, 
               attribute: .centerY, 
               multiplier: 1, 
               constant: 0) 
    view.addConstraints([horizontalConstraint, 
           verticalConstraint]) 
    updateViewConstraints() 
} 
+0

術語「錯誤」太含糊。在哪一行,什麼是完整的錯誤? –

+0

什麼是不行的?它是不是像你期望的那樣出現在屏幕上?應用程序崩潰了嗎?日誌中是否有警告? –

+0

@ Mr.Xcoder對不起,我忘了解決題目。它不會給我任何錯誤 – Slowpoke

回答

0

您需要設置logoImage.translatesAutoresizingMaskIntoConstraints = false因爲它決定了視圖的自動尺寸面具是否被翻譯成自動佈局的限制。

internal func setupIntroMovie() { 
     movieView = UIView(frame: view.frame) 
     view.addSubview(movieView!) 
     view.addSubview(logoImage) 

     let horizontalConstraint = NSLayoutConstraint(item: logoImage, 
                 attribute: .centerX, 
                 relatedBy: .equal, 
                 toItem: view, 
                 attribute: .centerX, 
                 multiplier: 1, 
                 constant: 0) 
     let verticalConstraint = NSLayoutConstraint(item: logoImage, 
                attribute: .centerY, 
                relatedBy: .equal, 
                toItem: view, 
                attribute: .centerY, 
                multiplier: 1, 
                constant: 0) 
     // Update 
     logoImage.translatesAutoresizingMaskIntoConstraints = false 

     view.addConstraints([horizontalConstraint, 
          verticalConstraint]) 
     updateViewConstraints() 
    } 

如果此屬性的值爲true,系統將創建一組 約束地複製視圖的 自動尺寸調整掩碼中指定的行爲。這還允許您使用視圖的框架,邊界或中心屬性 來修改視圖的大小和位置,從而允許您在自動 佈局中創建靜態的基於框架的佈局。