我正在努力将代码中的一个按钮添加到view
的右上角。
有人可以解释我如何在不设置左约束的情况下执行此操作?这将是左上方V:|-10-[v0]
,H:|-10-[v0]
它会反转它?我正在尝试这个:V:[v0]-10-|
,H:[v0]-0-|
,但它不像我想的那样工作
提前致谢!
答案 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
类似,布局锚点具有常量和乘数,如果为约束声明名称,则可以更改。
您可以将NSLayoutConstraints
与NSLayoutGuides
结合使用以获得一些不错的“自适应布局”。这些指南的作用类似于“spacer / invisible”UIViews,除了开销 - 它们不是视图。您可以获得一组Apple“标准”边距(UIView.layoutMarginsGuide),或者您可以创建一组同等大小的动态指南来平衡事物。
以下是关于layout anchors和layout guides的两个博客。这些示例是用Swift 2编写的,但Swift 3没有语法更改。