2017-07-02 104 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,系统将创建一组 约束地复制视图的 自动尺寸调整掩码中指定的行为。这还允许您使用视图的框架,边界或中心属性 来修改视图的大小和位置,从而允许您在自动 布局中创建静态的基于框架的布局。