如何编写手动AutoLayout约束?

时间:2016-11-16 09:35:52

标签: autolayout xcode8 ios10

我是新手iOS开发人员,我想学习如何编写手册AutoLayout约束。因为我找到了视觉上允许AutoLayout如何工作的链接。有关更多信息,请参阅以下链接。

  

网址:https://autolayoutconstraints.com/

但它不允许它在那里的其他组件及其相关关系时如何工作。

感谢您的快速回复,我希望我能更清楚地解决我的问题。

3 个答案:

答案 0 :(得分:1)

您可以使用第三方库,例如SnapkitSwiftyLayout

答案 1 :(得分:1)

您是否在询问如何以编程方式设置约束?如果是的话,你是打算一直使用故事板还是以编程方式实现所有内容?

如果你想以编程方式完成所有操作,它会看起来像:

class someViewController: UIViewController{
    let myLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Hello"
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubView(myLabel)

        myLabel.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
        myLabel.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
        myLabel.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
        myLabel.heightAnchor.constraint(equalToConstant: 50).isActive = true
    }
}

这会在ViewController中创建一个标签,并将其固定在左下角和底部,设置高度为50像素。您可以通过查找该锚点并将其设置为所需值来找到该项目的任何一个约束。确保将 translatesAutoresizingMaskIntoConstraints 设置为false,否则您的约束不会被跟踪。

答案 2 :(得分:1)

我想通过手册你的意思是通过代码应用约束。

Autolayout自成立以来一直在不断发展。 要通过代码应用约束,您可以使用这三种技术中的任何一种。 (最简单和最新的技术)

旧的详细约束使用方法,( constraintWithItem

+(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c

视觉格式语言https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/VisualFormatLanguage.html

布局主播https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html#//apple_ref/doc/uid/TP40010853-CH16-SW5

您可以谷歌粗体来了解更多信息。 但这些并不比https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/index.html#//apple_ref/doc/uid/TP40010853-CH7-SW1更好。 本文档包含应用约束的示例,以及其他组件(视图)及其关系。