我正在使用Xcode 6中的iPhone应用程序,我已经为我的视图设置了约束。我想确保UIButton不会脱离页面或在极大尺寸的设备上丢失其宽高比。
UIButton使用约束作为视图的中心 UIButton限制在边距的水平边缘
问题是在iPhone 6上加按钮是巨大的。如何设置UIButton的最大尺寸?我希望它能够扩展,但一旦达到150x150,我希望它不再增长。
由于
答案 0 :(得分:9)
您创建了Width less Than or Equal 150
约束。这是因为按钮具有固有宽度,因此约束将其限制为最大宽度为150磅
但这会与你的边缘限制发生冲突,因为他们想让按钮宽度超过150点。如果降低边缘约束的优先级,则宽度约束优先。只有在不破坏宽度约束的情况下,才会满足边缘约束。边缘约束不会消失,它们仍然会在按钮上设置一些“拉”,但它们无法断言它们的全部“力”。所以他们只需将它拉到150点的最大宽度。
您就是这样做的:
创建“常规”宽度约束,然后在侧栏中编辑该约束,使其成为“小于或等于”约束。
接下来,选择边缘约束并将其优先级降低到小于1000的值。
你有一个按钮,一直长到150点宽。
代码:
let button = UIButton()
button.setTranslatesAutoresizingMaskIntoConstraints(false)
button.backgroundColor = UIColor.redColor()
button.setTitle("Button", forState: .Normal)
view.addSubview(button)
let centerXConstraint = NSLayoutConstraint(item: button, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0)
view.addConstraint(centerXConstraint)
let centerYConstraint = NSLayoutConstraint(item: button, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1, constant: 0)
view.addConstraint(centerYConstraint)
let views = ["button" : button]
let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("|-(100@999)-[button(<=150)]-(100@999)-|", options: nil, metrics: nil, views: views)
view.addConstraints(horizontalConstraints)
最后两行包含重要约束。