为什么两部手机的按钮都不在旁边?

时间:2015-06-19 19:36:59

标签: ios xcode swift

我尝试进行自动布局,使按钮出现在边缘,但在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)

3 个答案:

答案 0 :(得分:0)

计算机完全按照你的要求去做。你在约束中说'#34;把这个按钮从左边缘开出285点"。那么,与整个屏幕相关的位置显然取决于屏幕正确边缘的位置!

所以,如果那不是你的意思,那就不要这么说了。例如,如果要相对于右边缘修复它,则相对于右边缘而不是左边缘修复它。

答案 1 :(得分:0)

您将按钮的前导设置为距视图控制器内容视图前导的常数285点。 iPhone 5的屏幕比6更窄。

我不希望它处于iPhone 5或iPhone 6的边缘。但是,6有一个更宽的屏幕,因此它将更接近6的中心而不是它将在5.为什么不在水平约束中尝试像20那样小得多的常数值?

答案 2 :(得分:0)

以下几行:

Vector2 scorePos

您将按钮的左侧从视图左侧固定到285。没有理由按钮会跟随屏幕的宽度,因为你将它固定在距离左侧285的位置。您需要做的是将按钮的尾随空格固定到超级视图,方法是在右侧填充所需的填充量,例如填充为10。

尝试这样的事情:

score = 0;