2015-06-19 34 views
-1

我试着做自动布局,使按钮出现在边缘,但在iphone 5它的边缘和iphone 6它是在中间区域。为什么按钮不在两侧的电话?

next = UIButton() 
    let me = "next.png" 
    next.setImage(UIImage(named: me), forState: .Normal) 
    next.frame = CGRectMake(250, 370, 40, 40) 
    next.setTranslatesAutoresizingMaskIntoConstraints(false) 
    next.addTarget(self,action: "nexter:", forControlEvents: UIControlEvents.TouchUpInside) 
    self.view.addSubview(next) 

    let horizontalConstraintnext = NSLayoutConstraint(item: next, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 285) 
    view.addConstraint(horizontalConstraintnext) 

    let verticalConstraintnext = NSLayoutConstraint(item: next, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 350) 
    view.addConstraint(verticalConstraintnext) 

    let widthConstraintnext = NSLayoutConstraint(item: next, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 40) 
    next.addConstraint(widthConstraintnext) 

    let heightConstraintnext = NSLayoutConstraint(item: next, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 40) 
    next.addConstraint(heightConstraintnext) 
+0

由于设备具有不同的宽度。 – nhgrif

回答

0

计算机正在做你刚刚告诉它做的事情。您在约束条件中说“将此按钮从左边缘放置285点”。那么,看起来与整个屏幕显然取决于屏幕的右边边缘是!

所以,如果这不是你的意思,不要这么说。例如,如果您想要将其固定在右侧边缘上,请将其相对于右侧边缘而不是左侧边缘进行修复。

0

您将按钮的引导设置为从视图控制器的内容视图开头的恒定的285个点。 iPhone 5的屏幕比6更窄。我不希望iPhone 5或iPhone 6处于边缘。但是,屏幕更宽,所以它会变成更接近6的中心而不是5的中心。为什么不在水平约束中尝试一个像20那么小的常量值?

0

在下面的行:

let horizontalConstraintnext = NSLayoutConstraint(item: next, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 285) 
view.addConstraint(horizontalConstraintnext) 

您从视图的左侧针按钮的左侧到285。没有理由按钮然后将跟随屏幕的宽度,因为你固定它始终离开左侧285。你需要做的是将按钮的尾部空间固定在超级视图上,在右边填充你想要的填充量,例如填充10。

尝试这样:

let horizontalConstraintnext = NSLayoutConstraint(item: next, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 10) 
    view.addConstraint(horizontalConstraintnext)