右上限约束格式

时间:2017-04-08 19:39:41

标签: swift swift3 constraints

我正在努力将代码中的一个按钮添加到view的右上角。 有人可以解释我如何在不设置左约束的情况下执行此操作?这将是左上方V:|-10-[v0]H:|-10-[v0]它会反转它?我正在尝试这个:V:[v0]-10-|H:[v0]-0-|,但它不像我想的那样工作

提前致谢!

1 个答案:

答案 0 :(得分:3)

根据评论,我想就如何在右上角放置UIButton提供两个答案。

<强> VFL:

您的垂直针脚位于右下角,而不是顶部。而不是V:[v0]-10-|,其中“管道”字符(指定屏幕的边界)位于最后,将其放在开头 - |-10-[v0]

如果你给了按钮一些高度/宽度 - 我认为你有“左上角”的代码 - 这应该解决问题。

<强>锚

在iOS9中引入布局锚点(以及布局指南)是编码自动布局的第三种方式。像NSLayoutConstraints一样,这比VFL更不“直观”。但与NSLayoutConstraints不同,它不那么冗长 - 因此更“狡猾”恕我直言。

要将UIButton固定在左上方,您仍然需要为自动布局提供四个方面 - 高度,宽度和X / Y位置。在下面我假设v0的superview被称为view,就像UIViewController的根视图一样。

// declare your button
let v0 = UIButton()

override func viewDidLoad() {
    super.viewDidLoad()

    // remember, you ALWAYS need to turn of the auto resize mask!
    v0.translatesAutoresizingMaskIntoConstraints = false

    view.addSubview(v0)

    // create a square button
    v0.widthAnchor.constraint(equalToConstant: 100.0).isActive = true        
    v0.heightAnchor.constraint(equalToConstant: 100.0).isActive = true

    // pin the button 10 points from the left side of the view
    v0.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10).isActive = true        

    // here's how you would pin the button 10 points from the right side of the view
    // note the use of a negative here!
    // v0.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10).isActive = true        

    // pin the button 10 points from the top of the view
    v0.topAnchor.constraint(equalTo: view.topAnchor, constant: 10).isActive = true

}

NSLayoutConstraints类似,布局锚点具有常量和乘数,如果为约束声明名称,则可以更改。

您可以将NSLayoutConstraintsNSLayoutGuides结合使用以获得一些不错的“自适应布局”。这些指南的作用类似于“spacer / invisible”UIViews,除了开销 - 它们不是视图。您可以获得一组Apple“标准”边距(UIView.layoutMarginsGuide),或者您可以创建一组同等大小的动态指南来平衡事物。

以下是关于layout anchorslayout guides的两个博客。这些示例是用Swift 2编写的,但Swift 3没有语法更改。